我想在MyClass.m文件中定义私有实例变量.在我看来,有两种方法可以做到:
使用类扩展
@interface HelloViewController ()
{
int value;
}
Run Code Online (Sandbox Code Playgroud)在@implementation部分中定义
@implementation HelloViewController
{
int value;
}
Run Code Online (Sandbox Code Playgroud)哪个更好?
我认为最近Apple的编码风格是使用类扩展吗?
例如,由Master-Detail Application Template生成的MasterViewController.m
@interface MasterViewController () {
NSMutableArray *_objects;
}
@end
Run Code Online (Sandbox Code Playgroud) 我只是想问是否可以通过类别添加实例变量.我的特殊问题是,我需要将一个NSIndexPath属性添加到ASIHTTPRequest对象,但我不想将ASIHTTPRequest子类化为原则问题.
我有什么选择吗?
谢谢你的回答,克里斯蒂安
我已经读过,@synthesize它将自动创建相应的实例变量,@property@protected默认情况下为 ivars .但是,如果我使用类扩展(如下所示)来指示@property方法是私有的呢?
// Photo.m
@interface Photo ()
@property (nonatomic, retain) NSMutableData *urlData;
@end
Run Code Online (Sandbox Code Playgroud)
相应的ivar会是@private吗?或者我应该明确地声明它是@private这样的吗?
// Photo.h
@interface Photo : Resource {
@private
NSMutableData *urlData;
}
Run Code Online (Sandbox Code Playgroud) 我对目标C中声明的变量如何感到困惑.
1:我看到@property并且使用了@synthesize声明.我的问题是,这两个声明是什么?为什么他们总是一起使用?我想@synthesize是创建getter和setter的捷径?
2:说,我想声明一个只能在声明的类中访问的NSMutableArray.我必须myArray = [[NSMutableArray alloc] init]在使用该addObject方法向其写入内容之前执行.我什么时候发布阵列呢?
3:是否有一种不同的方式来声明一个只能在声明可以在所有类中访问的类才能访问的变量?
4:类似于问题2,但现在变量是NSString.为什么我不必分配和初始化它在自己的类中共享相同的变量?请告诉我之间的不同self.myString = @"";来myString = @"";
非常感谢.