小编Ijo*_*chy的帖子

如何在Interface Builder中删除或替换自动添加的NSView?

当我在XCode 4.6中创建一个新的OSX项目,并选择Cocoa Application模板时,我随后在Interface Builder中看到的是NSWindow,NSMenu(预先填充了一些菜单项),以及NSWindow中的NSView.但是,当我尝试删除NSView并用NSTableView替换它,或者将NSView嵌入到NSScrollView中时,我无法这样做.

自动生成的NSView在某种程度上是特殊的吗?NSWindow是否要求NSView位于其上,并且不允许其他一些子类(如NSTableView或NSCollectionView)成为层次结构中的根视图?我知道我可以在Identity Inspector中更改类,但这似乎没有做任何事情.这个新手有什么想法或提示吗?

macos cocoa nsview xcode4

5
推荐指数
1
解决办法
960
查看次数

在Objective-C中如何处理相关对象的NSArray

Animal是一个BOOL名为属性的类alive.Monkey,Zebra并且Walrus是子类Animal.如果我有一个包含混合实例的NSArray调用zoo实例Monkey,Zebra并且Walrus,我想找到第一个活动Zebra实例,我可能会这样做:

Zebra *zebra; 
for (Animal *animal in zoo) {
    if ([animal isMemberOfClass:[Zebra class]] && animal.alive) {
        zebra = animal;
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是编译器在设置时抱怨不兼容的指针类型zebra = animal.如果我像那样做一些铸造zebra = (Zebra *)animal似乎工作,但我不确定在Objective-C中这种铸件是否安全.

处理这种情况的更好方法是什么?

cocoa objective-c nsarray subclassing

3
推荐指数
1
解决办法
114
查看次数

标签 统计

cocoa ×2

macos ×1

nsarray ×1

nsview ×1

objective-c ×1

subclassing ×1

xcode4 ×1