相关疑难解决方法(0)

使用xib创建UICollectionViewCell子类

我正在尝试创建一个UICollectionViewCell链接了一个xib 的子类,我已经这样做了:我创建了一个新的xib文件并UICollectionViewCell在其中添加了一个,然后我创建了这个子类文件:

@interface MyCell : UICollectionViewCell

@property (weak, nonatomic) IBOutlet UILabel *label;
@end
Run Code Online (Sandbox Code Playgroud)

另外我在文件所有者自定义类中链接了MyCell接口构建器中的类,并且我添加了一个UILabel,然后在我的UICollectionViewviewDidLoad中我这样做:

[self.collectionView registerClass:[MyCell class] forCellWithReuseIdentifier:@"MyCell"];

UINib *cellNib = [UINib nibWithNibName:@"MyCell" bundle:nil];
[self.collectionView registerNib:cellNib forCellWithReuseIdentifier:@"MyCell"];
Run Code Online (Sandbox Code Playgroud)

除此之外:

- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
MyCell *cell = (MyCell*)[cv dequeueReusableCellWithReuseIdentifier:@"MyCell" forIndexPath:indexPath];


cell.label.text = @"Cell Text";


return cell;
}
Run Code Online (Sandbox Code Playgroud)

但是这不起作用,我收到此错误:

*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSObject 0x907eca0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the …
Run Code Online (Sandbox Code Playgroud)

iphone xib ios uicollectionview uicollectionviewcell

46
推荐指数
2
解决办法
6万
查看次数

storyboard instantiateViewControllerWithIdentifier未设置IBOutlets

我正在使用故事板instantiateViewControllerWithIdentifier:,我注意到IBOutlets我所连接的所有内容仍然是零.但是,IBActions我已经连线工作了.视图和控制器是链接的(即controller.view不是nil),如果我显示视图,它会显示我期待的内容.

我错过了什么?

这是我的设置:

  1. 我的故事板中定义了一个View Controller.我给它一个标识符,它与我在调用时使用的标识符相同instantiateViewControllerWithIdentifier:
  2. 我通过单击View Controller(在First Responder下)设置了视图的所有者,并在Identity Inspector下将Custom Class设置为与我要将视图连接到的类相同的名称.
  3. 然后我打开助手编辑器,并控制拖动UI元素来创建IBOutletsIBActions.

interface-builder ios uistoryboard

37
推荐指数
1
解决办法
1万
查看次数

ARC下的IBOutlet和viewDidUnload

还有一个类似的问题这对SO 在这里,但我只是想澄清的东西,并没有完全解释存在.

据我所知,所有代表和出口 - 事实上任何对"父"对象的引用,作为一个好公民,并考虑一分钟的对象图 - 应该归结为弱引用.由于零指针的性质在引用对象的保留计数达到零时自动降至零,这是否意味着现在将IBOutlets设置为nil viewDidUnload是不必要的?

所以,如果我这样宣布我的出口:

@property (nonatomic, weak) IBOutlet UILabel *myLabel;
Run Code Online (Sandbox Code Playgroud)

以下代码是否有效?

- (void)viewDidUnload
{
    self.myLabel = nil;

    [super viewDidUnload];
}
Run Code Online (Sandbox Code Playgroud)

weak-references iboutlet ios automatic-ref-counting

36
推荐指数
3
解决办法
7076
查看次数

IBOutlet和其他弱者或弱者

我已将项目切换到ARC,我不明白是否必须使用strongweak用于IBOutlets.Xcode执行此操作:在界面构建器中,如果创建一个UILabel例如我将它与助理编辑器连接到我的ViewController,它创建:

@property (nonatomic, strong) UILabel *aLabel;
Run Code Online (Sandbox Code Playgroud)

它使用了strong,而不是我在RayWenderlich网站上阅读的教程说:

但对于这两个特殊属性我还有其他计划.而不是 strong,我们将其声明为weak.

@property (nonatomic, weak) IBOutlet UITableView *tableView;
@property (nonatomic, weak) IBOutlet UISearchBar *searchBar;
Run Code Online (Sandbox Code Playgroud)

Weak是所有插座属性的推荐关系.这些视图对象已经是视图控制器视图层次结构的一部分,不需要在其他地方保留.声明出口的最大好处weak是可以节省编写viewDidUnload方法的时间.

目前我们viewDidUnload看起来像这样:

- (void)viewDidUnload
{
    [super viewDidUnload];
    self.tableView = nil;
    self.searchBar = nil;
    soundEffect = nil;
}
Run Code Online (Sandbox Code Playgroud)

您现在可以将其简化为以下内容:

- (void)viewDidUnload
{
    [super viewDidUnload];
    soundEffect = nil;
}
Run Code Online (Sandbox Code Playgroud)

所以使用weak,而不是strong,并删除设置为nil videDidUnload,而不是Xcode使用strong,并使用self... = nil …

weak-references ios ios5 automatic-ref-counting strong-references

32
推荐指数
2
解决办法
2万
查看次数

IBOutlet应该是弱还是强?

我正在使用Xcode 6.2进行iOS项目.在旧版本的Xcode中,当为IBOutlet创建连接时,它始终是弱存储.现在,当我创建连接时,它们默认为强大.我这样离开,并没有注意到任何差异.

哪个版本的Xcode默认更改为强,为什么?

iboutlet swift xcode6 ios8.2

25
推荐指数
2
解决办法
2万
查看次数

ARC项目中的NSTextView的IBOutlet

当你读到这里在大多数情况下,IBOutlet应该是弱.

现在,您可以在开发库中阅读并非所有类都支持弱引用.(例如NSTextView).这意味着您必须使用assign:

@property (assign) IBOutlet NSTextView *textView;
Run Code Online (Sandbox Code Playgroud)

如果使用弱引用,您将收到以下错误:"不允许合成弱不可用属性,因为它需要合成__weak对象的ivar"

文档错过的内容是现在你必须在使用后再将属性设置为nil,例如通过一种dealloc方法:

- (void)dealloc
{
    self.textView = nil;
} 
Run Code Online (Sandbox Code Playgroud)

据我所知,标NS_AUTOMATED_REFCOUNT_WEAK_UNAVAILABLE有的类不支持弱引用,但原因是什么?

weak nstextview iboutlet automatic-ref-counting

21
推荐指数
1
解决办法
1755
查看次数

UIWebView随机崩溃在[UIViewAnimationState release]:消息发送到解除分配的实例

我有一个随机UIWebView使用崩溃iOS8.1UIWebView,使用iPhone5的.在我的测试中,崩溃不会出现在iOS7上.

我创建了这个github存储库来重现崩溃:https: //github.com/crarau/WebViewCrash

基本上我正在添加一个UIWebView并加载www.amazon.com

随机的应用程序崩溃的上WebThreadEXC_ARM_BREAKPOINT

在控制台上启用Zombie跟踪后,会显示以下消息:

[UIViewAnimationState release]: message sent to deallocated instance 0x14deff70
Run Code Online (Sandbox Code Playgroud)

这里UIView加载时会发生什么:

[super viewDidLoad];

NSURLRequest * urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.amazon.com"]];

self.webView.layer.cornerRadius = 0;
self.webView.userInteractionEnabled = YES;
self.webView.multipleTouchEnabled = YES;
self.webView.backgroundColor = [UIColor clearColor];
self.webView.scrollView.scrollEnabled = NO;
self.webView.scrollView.bounces = NO;
[self.webView loadRequest:urlRequest];
Run Code Online (Sandbox Code Playgroud)

异常堆栈跟踪:

    Exception Type:  EXC_BREAKPOINT (SIGTRAP)
    Exception Codes: 0x0000000000000001, 0x000000000000defe
    Triggered by Thread:  2

    Thread …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c uiwebview ios

21
推荐指数
2
解决办法
6336
查看次数

斯威夫特,两个问题.1)弱变量2)@IBOutlet的bang运算符

每:

@IBOutlet weak var nameLabel: UILabel!
Run Code Online (Sandbox Code Playgroud)
  1. 每当我声明我的IBOutlets时,我只使用var而不是weak var.但我最近遇到了一些使用弱var的代码模板.他们为什么这样做?还有什么好处?

  2. 为什么在UILabel结束时会有一个爆炸操作员.我知道这是必需的,我和它一起去,但现在就问它.

提前致谢.

operators iboutlet automatic-ref-counting swift

20
推荐指数
2
解决办法
7458
查看次数

从NIB加载视图,即使其他IBOutlet工作正常,IBOutletCollection也是零

我在NIB文件中布局了一个视图,然后将我的UIView子类添加为文件所有者.

子类看起来像这样:

@property (nonatomic, weak) IBOutlet UILabel *categoryLabel;
@property (nonatomic, weak) IBOutletCollection(UIImageView) NSArray *images;
Run Code Online (Sandbox Code Playgroud)

由于这个原因,属性很弱:https://stackoverflow.com/a/7729141/1016515

然后我将标签和UIB中的UIImageViews从视图连接到文件所有者.

然后,在子类的awakeFromNib部分,我这样做了:

[[NSBundle mainBundle] loadNibNamed:@"CategoryButton" owner:self options:nil];
NSLog(@"label: %@",self.categoryLabel);
NSLog(@"images: %@",self.images);
Run Code Online (Sandbox Code Playgroud)

我希望看到categoryLabel和图像的地址.相反,我发现类别标签很好,图像是nil.

这是非常令人费解的,因为声明imagescategoryLabel相同.为什么一个工作而另一个工作失败?

xcode objective-c interface-builder ios

17
推荐指数
1
解决办法
3378
查看次数

什么时候我应该使用强弱对弱IBOutlets(进一步澄清)

我以为我从这个问题中清楚地理解了这一点 - > 在ARC下IBOutlets是强还是弱?但我最近进行了一次讨论,让我完全糊涂了.有人可以确认以下是否正确?(如果这是一个副本,我并不打算违反任何规则..只需要澄清,因为我可以理解图表比文字更好..)

在此输入图像描述

ARC下(MacOSx)

  1. view1 =强
  2. MainView = weak(在WindowControllerA中)
  3. MainView = strong(在ViewControllerB中)
  4. view2 =强
  5. view3 = weak(在ViewcontrollerB中)
  6. view3 = strong(在ViewControllerC中)

如果这是正确的,那么有人可以确认..

在上图中,我们在屏幕上有一个windowControllerA .在windowControllerA的视图中,有2个NSView.view1属于windowController,但是mainView属于insregciated viewController,ViewControllerB的视图.

ViewControllerB在其mainView中还包含2个视图.View2由viewControllerB拥有,而view3属于另一个实例viewController,ViewControllerC.

ViewController C拥有一个它拥有的视图.

cocoa objective-c iboutlet

14
推荐指数
1
解决办法
8459
查看次数