objective-c - 强制 obj-c 在访问 nil 属性时抛出异常

标签 objective-c lldb

我创建了一个 NSMutableArray* myArray 属性然后忘记分配 self.myArray = [NSMutableArray array];-初始化。在这种情况下,我的应用程序当然从不提示,因为如果 self.myArraynil[self.myArray addObject:foo] 是完全合法的,所以我只是挠着头说“你的开球效率加倍”。

我意识到这是不可能的,但是是否有 lldb 属性或属性说明符会导致 obj-c 在完成 -init 后确保属性为非 nil?

最佳答案

我不相信有一个编译器标志可以帮助您,但是您可以更改数组访问的语义,以便它通过您自己的方法而不是直接到 NSMutableArray

所以代替

@interface MyClass : NSObject
@property NSMutableArray *array
@end

使用:

@interface MyClass : NSObject
- (void)addObject:(id)object;
- (NSUInteger)objectCount;
- (id)objectAtIndex:(NSUInteger)index;
- (void)removeObjectAtIndex:(NSUInteger)index;
@end

并且您可以向这些数组访问方法添加您喜欢的任何检查(当然也可以延迟创建数组)。

但是,如您所见,这可能只是为了解决一个小问题而付出巨大的努力,我自己不会这样做:)

关于objective-c - 强制 obj-c 在访问 nil 属性时抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23515004/

相关文章:

ios - MFMailComposeViewController 在 iOS 7 下不工作

objective-c - 如何动态加载对象并设置属性?

ios - API流程阻塞图和交互

qemu - 如何使用 LLDB 调试在 Apple Silicon Mac 上的 QEMU 中运行的原始 i386 MBR 二进制文件?

c++ - (lldb) 错误代码在带有 C++ 的 Xcode 中不起作用

c++ - 调试堆上损坏的对象

ios - Parse.com - 如何跟踪 PFObject 上的操作并更新当前 PFUser

ios - ios6&ios7中4寸屏和3.5寸屏UIButton和UITableview的显示方法

c - 堆栈跟踪、GDB 中没有函数名称,但出现在 LLDB 中

ios - LLDB 评估在 iOS 上耗尽内存。我怎样才能释放一些内存?