jjzjj

ios - 在 iOS 上阻止保留

有人可以帮助我了解哪种方法在避免block保留周期方面“最好”..__weaktypeof(self)weakSelf=self;weakSelf.myProperty=@"something";对比self->myProperty=@"something";后者是xCode5.1推荐的,前者似乎是历史上推荐的。谢谢 最佳答案 Apple唯一一次真正谈论self->_ivar语法是在他们观察到对某个实例变量_ivar的引用确实是等同于self->_ivar,因此在block中引用_ivar将隐式保留self。但他们并不是真的建议您使

ios - 是否建议为只读合成属性定义 ivars?

我发现很多时候我想要一个合成的只读属性,我只是根据其他变量实现该属性的getter方法,而不需要ivar,例如(注意:我在界面中定义了ivars,因为我使用的是OmniGraffleUML软件,它无法识别由合成属性自动生成的ivars:@interfaceEditor:UIView{BOOL_wordWrap;BOOL_showLineNumbers;NSDictionary*_options;}@property(nonatomic)BOOLwordWrap;@property(nonatomic)BOOLshowLineNumbers;@property(nonatomic,cop

ios - ivar 的问题

我正在对UIToolbar进行子类化,因为我要在我的整个应用程序中重复使用它。UIToolbar使用委托(delegate)协议(protocol):////UIToolbarCustom.h//#import@protocolUIToolbarCustomDelegate@required-(void)tab:(UIBarButtonItem*)sender;-(void)ok:(UIBarButtonItem*)sender;@end@interfaceUIToolbarCustom:UIToolbar{iddelegate;}@property(strong,nonatomic)

ios - 使用隐藏属性与私有(private) iVars

这个问题特别关注静态库/框架;换句话说,其他人最终会接触到的代码。我相当精通属性,因为我是在iOS6发布时开始iOS开发的。我已经使用在接口(interface)扩展中声明的隐藏属性来完成我所有的“私有(private)”属性工作,包括在我不希望其他人修改的面向公众的属性上使用readonly和readwrite在界面扩展中。重要的是,我不希望其他使用这些静态库/框架的人在我不允许的情况下访问这些属性,或者在我允许的情况下编写这些属性阅读它。我早就知道他们理论上可以创建自己的接口(interface)扩展并让我的readonly属性自己readwrite,或者猜测隐藏属性的名称。如果我

objective-c - Objective-C - 使用属性获取访问器与直接使用 iVar

我想知道使用(get)访问器读取属性值和直接使用iVar之间到底有什么区别?假设我有一个声明属性的类:@interfaceFoo:NSObject@property(strong)NSString*someString;@end在实现中我正在使用它。以下两行之间是否有任何区别:someLabel.text=self.someString;someLabel.text=_someString;对于集合访问器来说很清楚。Afaik对于强属性,访问者负责保留和释放(一个有趣的“附带问题”是,如果ARC改变了它,即直接设置iVar[假设它不是__weakiVar]也使用ARC正确保留和释放),

objective-c - 如果声明我自己的 getter & setter,则无法识别 iVar

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:propertynotworkingwithgetterANDsetter这是我面临的问题:我使用的是iOS6。我在头文件中声明了一个属性:@property(nonatomic)CGFloatscale;然后在实现中,我像这样创建自己的getter/setter:#defineDEFAULT_SCALE0.90-(void)setScale:(CGFloat)scale{if(_scale!=scale){_scale=scale;[selfsetNeedsDisplay];}}-(CGFloat)scal

objective-c - 调试是唯一在 Objective C 程序中使用 iVars 有意义的情况吗?

在我开发的最初几天,我开始总是在我编写的每个程序中创建实例变量。但是在了解了属性的强大功能之后,我觉得我们不需要使用iVars。但有时当我不得不调试代码时,我发现由于缺少iVar而难以调试自定义实体的值。现在我计划在所有自定义接口(interface)实现上使用iVar。请确认我一直在做的事情是否是一个好的做法,是否有取舍?还有什么其他原因需要我们在ObjectiveC中使用iVars吗? 最佳答案 您并不是通过使用属性(大部分时间)来“不使用”iVar。您只是让编译器为您生成它们。我经常将私有(private)和protected

iphone - iOS iVar 命名为 "Size"语法错误?

拿这段代码:@interfaceSomeClass:NSObject{@privateNSString*Size;}@propertyNSString*Size;@end--------------------------@implementationSomeClass@synthesizeSize;-(void)something{Size=@"syntaxerror:Expectedidentifieror'('";self.Size=@"worksok";}@end为什么这是语法错误?“大小”是保留字还是已在NSSObject中定义?我在两个不同的项目上遇到错误...

iphone - 将数组保存到包含自定义对象 iPhone 的 Plist 文件

我有一个继承自NSObject的名为XYZ的类和一个包含XYZ对象的数组。我需要将此数组写入文档目录中的plist文件。在尝试[arraywriteToFile....]后,我发现writeToFile失败,因为数组包含XYZ类的自定义对象。可能的解决方案是将对象转换为NSData。实现这一目标的不同方法是什么?我发现NSCoding很合适,但无法理解如何使用它。任何帮助将不胜感激。 最佳答案 RayWenderlich'sblog上有一个很好的教程其中解释了如何使用NSCoding。简单地说,你只需要在你的代码中实现*-(void

ios - 如果显式实现一个 getter,是否仍然创建了 ivar?

我试图了解有关属性的所有情况,主要是自动创建ivar和不自动创建ivar的情况。请告诉我以下情况是否正确:属性是隐式读写的。如果声明了一个readwrite属性,并且getter和setter是都显式实现的,是不是真的不会自动生成ivar?假设声明了另一个读写属性,这次只有getter被显式实现。ivar将自动生成,因为只要属性的两个(getter或setter)之一未明确实现,它就会自动生成。与场景2基本相同,只是这次是显式实现的setter。ivar将自动生成,因为只要属性的两个(getter或setter)之一未明确实现,它就会自动生成。澄清一下,当创建ivar时,它是否总是前面