@interface SomeClass : SuperClass{ BOol *_shared;}@property(nonatomic) BOol *shared;
这是正确的方法吗?然后我只需设置并访问这样的值:
*self.shared = YES;
或者是将其设置为可保留属性的正确方法?
解决方法 不,您不希望发送指向实例变量的指针,以便其他一些类可以设置实例变量.这样做很脆弱,打破了封装.这是一个糟糕的设计模式.这也完全没必要.
如果实例A可以“向实例B发送指针”,则实例A可以轻松地向实例B发送对其自身的引用.从那里,实例B可以简单地执行[instanceA setShared:YES] ;.
@interface B:UIVIEwController@property(strong) A *controllerA;@end@interface A:UIVIEwController@property BOol dogDoorEnabled;@end@implementation A...- (voID) doSomething{ B *b = .... get an instance of B ...; [b setControllerA: self];}@end@implementation B...- (voID) doSomethingElse{ BOol isCheeSEOnFire = ... calculate whether the cheese is burning ...; [[self controllerA] setDogDoorEnabled: !isCheeSEOnFire];}@end
(注意保留周期 – 如果A以某种方式直接或间接保留B,那么从B对(强)引用A将创建一个保留周期.当你想打破那个周期时,调用[b setControllerA:nil]. )
现在,如果您仍然认为需要发送指向A到B内部状态的指针,请更新您的问题.
总结以上是内存溢出为你收集整理的objective-c – BOOL ivar应该是一个允许另一个类设置它的指针吗?全部内容,希望文章能够帮你解决objective-c – BOOL ivar应该是一个允许另一个类设置它的指针吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)