Objective-c中的"实例变量"和"属性"之间有区别吗?
我对此不太确定.我认为"属性"是一个具有存取方法的实例变量,但我可能认为错了.
我试图理解一些人用来区分实例变量和属性的策略.常见的模式如下:
@interface MyClass : NSObject {
NSString *_myVar;
}
@property (nonatomic, retain) NSString *myVar;
@end
@implementation MyClass
@synthesize myVar = _myVar;
Run Code Online (Sandbox Code Playgroud)
现在,我认为这个策略背后的整个前提是可以很容易地区分出伊达和财产之间的区别.所以,如果我想使用由合成属性继承的内存管理,我会使用如下内容:
myVar = @"Foo";
Run Code Online (Sandbox Code Playgroud)
另一种方式是通过自我引用它.[ivar/property here].
使用@synthesize myVar = _myVar策略的问题是,我认为编写代码如:
myVar = some_other_object; // doesn't work.
Run Code Online (Sandbox Code Playgroud)
编译器抱怨myVar未声明.为什么会这样?
谢谢.
我是目标C的初学者,我正在使用以下代码我正在使用xcode6
// Car.h
#import <Foundation/Foundation.h>
@interface Car : NSObject {
NSString *simple_name; //This is private
@property int mssp; //Cant use @property Error illegal visibility specification
}
-(void) sayHi:(NSString*)msg ;
@end
Run Code Online (Sandbox Code Playgroud)
有关我为什么会收到此错误的任何建议?
我在iOS/Objective C中很熟悉.现在我看到人们self->property在某些情况下使用.它有什么不同self.property?实际需要是什么?我用Google搜索,没有回答.很好奇.