jjzjj

iphone - 如何使用 ivar_getTypeEncoding 和 @encode 动态确定和比较对象 ivar 的类型?

这是我想做的比较操作://foobaristhenameofanivaronsomeclass//i.e.NSDate*foobar;constchar*ivarType=[selfgetTypeForInstanceVariableWithName:@"foobar"];constchar*objType=@encode(NSDate);if(strcmp(ivarType,objType)==0){//setvalue}NSLog(@"comparing%swith%s",ivarType,objType);辅助方法:-(constchar*)getTypeForInstanceV

ios - 冒号如何与ivars一起使用?

我正在进行一些代码重构,并且遇到了一些我以前从未见过的ivars语法。代码看起来像@interfaceObject:NSObject{@privateBOOLaBool:1;}@end我的问题是,:1是做什么的? 最佳答案 此语法对于ivar的含义与它在结构中的含义相同;您正在声明指定大小的位域。在这种情况下,这可能对类的实际大小没有任何影响——我认为你不能分配少于一个字节——但如果你试图输入一个值,编译器会警告你进入对于您指定的位域大小来说太大的变量:@interfaceBittyBoop:NSObject{unsignedcha

iphone - 内部属性与 ivars

当我需要一个私有(private)对象时,我目前使用属性,如下所示://Classextensionin.mfile@interfaceMyClass()@property(strong,nonatomic)NSArray*myInternalArray;@endself.myInternalArray=something;或者你可以这样做:@implementationMyClass{NSArray*_myInternalArray;}_myInternalArray=something;如果没有自定义setter或getter,两者是等价的。内部变量的最佳实践是什么?一种方法比另一

iphone - 从 NSString 获取 ivar 或属性

我们能否从NSString中获取一个ivar或一个property就像我们可以从一个类中获取一个classNSString与函数NSClassFromNSString()? 最佳答案 对于任何属性,您只需使用[objectvalueForKey:myString]即可完成。这也可以在某些情况下找到ivars。 关于iphone-从NSString获取ivar或属性,我们在StackOverflow上找到一个类似的问题: https://stackoverflo

ios - ARC weak ivar 在返回之前发布 - 构建发布时,而不是调试

我有一个延迟创建对象并将其存储为弱属性的类。其他类可能会请求这个对象,但显然必须保持对它的强引用以防止对象被释放://.h@interfaceObjectManager@property(nonatomic,weak,readonly)NSObject*theObject;@end//.m@interfaceObjectManager()@property(nonatomic,weak,readwrite)NSObject*theObject;@end@implementationObjectManager-(NSObject*)theObject{if(!_theObject){_t

objective-c - 现代 Objective-C 约定真的没有任何不是属性的 ivar 吗?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:iOS:musteveryiVarreallybeproperty?我刚刚读了一本书,说现代惯例是根本不在花括号之间的.h文件中声明任何ivar,而是使所有内容都具有属性。我想确保即使在微不足道的情况下也是如此。我正在制作一个类,其中有一个名为“recording”的BOOL,它表示设备当前是否正在录制一些视频。这不是其他类需要的东西,我倾向于将它作为BOOL放在标题中,然后在需要它的2个位置的.m文件中引用它。但是,我也想以公认的正确方式做事。但我不明白为什么要将其设为公共(public)属性(proper

objective-c - 奇怪的 ARC 问题没有在 UIView 子类中释放 ivar

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Whyisobjectnotdealloc'edwhenusingARC+NSZombieEnabled我目前在一个项目中遇到了一个非常奇怪的问题。简而言之,我有ViewA,它拥有ViewB(strong属性)。ViewA在其初始化程序中创建其ViewB。这两个对象都是UIView的子类。我已经覆盖了两者中的dealloc并放置了一个日志行和一个断点以查看它们是否被命中。似乎ViewA的dealloc被命中但ViewB没有。但是,如果我在ViewA的dealloc中放入一个self.viewB=nil然后它是

iOS Theos Hook 并设置 ivar/property

我正在挂接以下类,我正在尝试弄清楚如何挂接和设置m_proxyPort。我可以毫无问题地阅读它,但如果我想更改它呢?有3个NSStringivar的setter,但是没有m_proxyPort的setter,想知道是否有办法设置那个ivar?@interfaceDDURLProtocol:NSURLProtocol{intm_proxyPort;NSString*_proxyHost;NSString*_proxyUsername;NSString*_proxyPassword;}%hookDDURLProtocol-(void)check{[selfsetProxyHost:@"12

objective-c - 合成的ivars存储在哪里?

我一直在研究自动合成的ivars。我的问题是,“它们自动分配到哪里去了?”我本来希望它们是self的一部分,这样我就可以在调试器中看到它们,但似乎我可以看到它们的唯一方法是调用访问器方法(通过gdb'po'命令)。类/对象的结构中是否没有空间(对于显式声明的ivar会有空间)?(是否有对现代Objective-C对象的内存表示的描述?)作为一名C语言人员,无法看到所有内容的位置让我感到非常不舒服。:-P 最佳答案 看起来这会告诉你:Howdoautomatic@synthesizedivarsaffectthe*real*sizeo

objective-c - IBOutlets 应该是 ivar 还是属性?

虽然我确信它们存在,但我很难找到或确定在ViewController中声明socket的官方最佳实践。据我所知,有3个选项:仅ivar仅限属性(property)由ivar支持的属性当我尝试通过从IB拖入我的ViewController来自动生成一个属性时,Xcode目前崩溃了,但据我所知,这样做会创建一个没有ivar的属性。也可以拖入ivar部分,这将创建一个没有属性的ivar。这表明property-only和ivaronlyoutlets都适合apple。所以在viewDidUnload中我们需要将nil分配给我们的任何导出,但是dealloc呢?如果我们使用了一个没有ivar的