gpt4 book ai didi

iphone - 从子类访问父类的实例变量

转载 作者:搜寻专家 更新时间:2023-10-30 20:26:48 24 4
gpt4 key购买 nike

我已经学习 iPhone 的 Objective C 几个星期了,今天通过了我的配置文件,所以想把我的应用程序放到我的手机上。但是,当我为我的 iPhone 构建它时,我得到了以下类型的错误列表(几乎相同):

error: 'itemPickerView' undeclared (first use in this function)

当我为模拟器构建这个时,这不会发生。

所有错误都发生在扩展 DetailController 的单个类实现文件 (ProjectSettingsController) 中。

我还有 2 个其他类也扩展了 DetailController,并使用与 ProjectSettingsController 相同的实例变量,但它们不会导致错误。

ProjectSettingsController 略有不同,因为它管理的 View 永远不会直接添加到导航 Controller 中,但是编译器当时并不知道这一点,并且它在模拟器(均运行 IOS 4.3)上正常工作

我想我的问题有两个:

  1. 为什么在为设备编译时出现编译器错误,而在为模拟器编译时却没有?

  2. 为什么只在这一个类上给我这个错误?

这是 DetailController 的 .h

@interface DetailController :      UITableViewController<UIPickerViewDelegate,UIPickerViewDataSource>  {
NSMutableDictionary * data;
NSMutableArray * dataOrder;
NSMutableDictionary * objectToData;
UIDatePicker * pickerView;
UIPickerView * itemPickerView;
UIBarButtonItem * doneButton;
UIBarButtonItem * savedRightButton;
UIBarButtonItem * savedLeftButton;
UIBarButtonItem * insertButton;
UIView * slidingView;
UITextView * textView;
BOOL isEditing;
}

这是 ProjectSettingsController 的 .h

#import <UIKit/UIKit.h>
#import "DetailController.h"
#import "Project.h"
#import "Task.h"
@class ProjectController;

@interface ProjectSettingsController : DetailController{
}
@property (nonatomic, retain) ProjectController* parent;
@property (nonatomic, retain) UINavigationController * navigationController;
@property (nonatomic, retain) UINavigationItem * navigationItem;
@property (nonatomic, retain) Project* project;

ProjectController 被声明为一个类,而不是包含在内,因为它已经包含了这个类。我尝试将 DetailController 添加为 @class,但它什么也没做,正如我预期的那样。

这是 ProjectSettingsController.m 中一段有问题的代码片段

int hours = [itemPickerView selectedRowInComponent: 0] + 1;

这是 TaskController 的 .h,它可以正常工作

#import "DetailController.h"
#import "Task.h"
#import "Project.h"
#import "CompletionSlider.h"

@interface TaskController : DetailController{

}

这是来自 TaskController.m 的一段有效代码。

[itemPickerView selectedRowInComponent:0]+1]

我已经检查了这两个文件的来龙去脉大约 2 个小时,但找不到任何会发生这种情况的原因。

我是否应该更改代码以使用属性,然后我会检查我的代码并在其中放置一个 super.在所有这些变量之前?无法从子类中访问实例变量似乎很愚蠢(特别是因为我似乎能够访问这些方法?!)

我期待被告知我错过了什么愚蠢的事情

最佳答案

通常,当您将构建更改为目标模拟器或设备时,您会更改#import 或#include 的系统头文件源。这些头文件中的差异可能会导致模拟器或设备构建之间的变化。

每当你突然得到一个编译错误列表时,关注第一个错误。通常,一个错误会导致更多的错误,这些错误会迅速级联成一个巨大的列表。有时修复第一个错误可以修复所有其他错误。

关于iphone - 从子类访问父类的实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6850776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com