Tag: 属性

iOS – Objective C – 关于属性的问题

可能重复: 财产申报和自动备份分配 我对Objective-C相当陌生,我想问一个基本的问题。 我想弄清楚下面两个例子有什么区别: @interface MyViewController : UIViewController { UIImageView *myImageView; } @property (nonatomic, retain) UIImageView *myImageView; @end 和: @interface MyViewController : UIViewController { } @property (nonatomic, retain) UIImageView *myImageView; @end 什么是正确的方法? 我知道财产的使用和财产是什么意思。 问题是第一个例子和第二个例子有什么不同? 内存有差别吗? 提前致谢, 安德烈亚斯

我应该在Objective-C中使用ivars吗?

我有一个应用程序,我正在写,只使用@properties。 在我的任何课堂文件中,我都没有宣布任何一个伊娃。 据我所知,@属性不再需要ivars。 我是否按照最佳做法进行编码? 这最终会在长期的谚语中令我难堪吗? 我一直在阅读关于“正确”和“错误”的混合评论。

xcode 4.4中的自动属性如何合成工作?

我是Objective-C和XCode的新手,但是我很高兴地看到,XCode 4.4现在自动为我合成了我的属性。 我想这意味着我不再需要为我的属性input@synthesize,而且我可以使用self.propertyName = @"hi";来访问它们self.propertyName = @"hi"; , 例如。 我试图重写一些示例代码,以便我可以更好地理解它,但是此代码实现了自定义getter方法。 在示例代码中,该属性是手动合成的,如@synthesize managedObjectContext = __managedObjectContext; 。 自定义getter看起来像这样: – (NSManagedObjectContext *)managedObjectContext { if (__managedObjectContext != nil) { return __managedObjectContext; } NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; if (coordinator != nil) { __managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType]; [__managedObjectContext setPersistentStoreCoordinator:coordinator]; } return __managedObjectContext; } 在这个人的代码中,我看到他只是使用手动合成的存取器来获取和设置。 我计算了我的代码,我可以用self.managedObjectContextreplaceself.managedObjectContext ,但是不能。 如果我这样做,我得到一个错误告诉我,我试图分配给一个readonly属性。 这是有道理的,因为该属性被其他编码器定义为只读。 @property […]

如何dynamic确定Objective-C属性types?

我试图dynamic确定Objective-C中的属性的types。 根据我在这个网站和其他地方阅读的内容,我相信我正在做正确的事情。 但是,我的代码不起作用。 下面的代码片段演示了这个问题。 尝试获取“backgroundColor”和“frame”的属性信息,这两个属性都是UIView的有效属性,失败(class_getProperty()返回NULL): id type = [UIView class]; objc_property_t backgroundColorProperty = class_getProperty(type, "backgroundColor"); fprintf(stdout, "backgroundColorProperty = %d\n", (int)backgroundColorProperty); // prints 0 objc_property_t frameProperty = class_getProperty(type, "frame"); fprintf(stdout, "frameProperty = %d\n", (int)frameProperty); // prints 0 枚举这里描述的属性也不会产生预期的结果。 以下代码: NSLog(@"Properties for %@", type); unsigned int outCount, i; objc_property_t *properties = class_copyPropertyList(type, &outCount); for (i = 0; […]

使用“copy”属性来维护一个不可变的NSString

在Objective-C中,我对iOS开发和编程非常陌生。 我一直在做应用程序开发库的练习。 这是我目前正在尝试理解的练习。 3.testing如果将可变string设置为人的名字,会发生什么情况,然后在调用修改后的sayHello方法之前对该string进行变异。 通过添加复制属性更改NSString属性声明并再次testing。 我试图做到这一点,但是我修改的NSString实际上改变了,尽pipe使用了copy属性。 这里是我的声明和实现以及我的testing代码。 XYZPerson.h #import <Foundation/Foundation.h> @interface XYZPerson : NSObject @property (copy) NSString *firstName; @property NSString *lastName; @property NSDate *dob; – (void)sayHello; – (void)saySomething:(NSString *)greeting; + (id)init; + (id)personWithFirstName:(NSString *)firstName lastName:(NSString *)lastName dob:(NSDate *)dateOfBirth; @end //XYZPerson.m #import "XYZPerson.h" @implementation XYZPerson @synthesize firstName = _firstName; @synthesize lastName = _lastName; @synthesize dob = […]

iOS – 在codeSense中出现自动合成属性的“添加”方法

我刚刚创build了一个具有以下属性的iOS类: @property (nonatomic, strong) NSString* foo; @property (nonatomic, strong) NSObject* bar; @property (nonatomic) CGRect fubar; 我没有为这些属性添加任何@synthesize或显式的ivars。 然后我进入实现文件并开始创build一个方法如下: -(void) add 我将光标留在单词“add”的末尾。 然后以代码意义popup以下方法名称: addBar: (NSSet*) objects addBarObject: (objectType *) object addFoo: (NSSet*) objects addFooObject: (objectType *) object addFubar: (NSSet*) objects addFubarObject: (objectType *) object 这些方法是什么? 有没有关于他们的文件?

iOS中@property的默认值是什么?

iOS中@property的默认值是什么? 例如,如果我声明@property NSString *摄影师; 是默认值(分配)或(保留)还是还有什么? (primefaces,非primefaces)? 我无法从文档中find这些信息。 谢谢

使用KVO更改属性时发送通知

我在我的课堂上有一个名为myName的属性,如: @property (nonatomic, strong) NSString *myName; 当myName属性的值改变时,我需要发送一个通知。 现在我正在做一些事情: – (void)setMyName:(NSString *)name { _myName = name; [[NSNotificationCenter defaultCenter] postNotificationName:CHANGE_NOTIFICATION object:nil]; } 我知道有一些像iOS中的键值观测 。 但是我不知道如何实现,我读了整个文档,但是不能很好的理解。 请帮助我了解如何在不使用自定义setter的情况下实现相同的function。

符合协议和类的Swift属性

@property (strong, nonatomic) UIViewController<UITableViewDelegate> *thing; 我想在Swift中实现一个像这个Objective-C代码一样的属性。 所以这里是我试过的: class AClass<T: UIViewController where T: UITableViewDelegate>: UIViewController { var thing: T! } 这编译。 我从故事板添加属性时出现问题。 @IBOutlet标签会生成一个编译器错误。 class AClass<T: UIViewController where T: UITableViewDelegate>: UIViewController { @IBOutlet weak var anotherThing: UILabel! // error var thing: T! } 错误: Variable in a generic class cannot be represented in Objective-C 我正在执行这个权利? 我能做些什么来修复或解决这个错误? 编辑: […]

我需要ARC关键字的属性,我不合成?

我有一个财产,我不合成,而是我自己创build一个getter和setter。 因此,我认为,ARC关键字(强或弱)没有意义,所以我把它们消除了。 这在Xcode 4.3上工作正常,但是当我的同事在XCode 4.2上打开它时,编译器会抱怨没有强/弱关键字,于是我指示他再次无意义地input关键字。 哪个是正确的(有或没有关键字)? 要清楚:我有一个这样的属性@property (nonatomic) NSString *foo和我实现的.m文件-(NSString *)foo和-(void)setFoo:(NSString *)foo并且不包含@synthesize foo 。 另一个相关的细节是没有相应的iVar,而是与Core Data对象进行交互。 这不会在XCode 4.2中编译,除非我为关键字添加强或弱。 编辑我想到了一个更相关的东西,其中一个属性是一个协议,我不知道这是否有所作为。