相关疑难解决方法(0)

Objective-C中的NULL与nil

observeValueForKeyPath:ofObject:change:context:- 为什么文档使用NULL而不是nil在不指定上下文指针时?

null cocoa objective-c

180
推荐指数
4
解决办法
9万
查看次数

无法在Mac上使用ARC使用respondsToSelector

当我respondsToSelector在ARC环境中调用时,收到以下错误消息Automatic Reference Counting Issue No known instance method for selector respondsToSelector:

这是标题

#import <AppKit/AppKit.h>


@class MTScrollView;

@protocol MTScrollViewDelegate
-(void)scrollViewDidScroll:(MTScrollView *)scrollView;
@end


@interface MTScrollView : NSScrollView 
{

}

@property(nonatomic, weak) id<MTScrollViewDelegate>delegate;

@end
Run Code Online (Sandbox Code Playgroud)

这是实现文件

#import "MTScrollView.h"

@implementation MTScrollView

@synthesize delegate;


- (void)reflectScrolledClipView:(NSClipView *)aClipView
{
    [super reflectScrolledClipView:aClipView];

    if([delegate respondsToSelector:@selector(scrollViewDidScroll:)])
    {
        [delegate scrollViewDidScroll:self];
    }
}

@end
Run Code Online (Sandbox Code Playgroud)

有关我为什么会收到此错误的任何建议?

macos objective-c automatic-ref-counting

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

声明变量"id"和"NSObject*"之间有什么区别?

在Objective-C中,声明变量id与声明变量之间的区别是什么NSObject *

objective-c

44
推荐指数
3
解决办法
8945
查看次数

何时何时不使用Objective-C中的指针

我知道有很多关于指针的问题,特别是现在的Objective-C.但我正在寻找一些更高级别的答案来帮助我理解Objective-C中的范例.

我听说有人说在Objective-C中使用指针是一个问题或经验,即有些类要求你使用指针,有些则不然.这是真的?这是在Objective-C中使用指针的程度.

基本上,除了想要将引用变量显式传递给方法之外,Objective-C中指针的规则是什么?

pointers objective-c

24
推荐指数
1
解决办法
7109
查看次数

为什么我可以将int和BOOL转换为void*,但不能浮动?

void*是C和衍生语言的一个有用的特性.例如,可以使用void*在C++类中存储objective-C对象指针.

我最近正在研究类型转换框架,由于时间限制有点懒 - 所以我用void*...这就是这个问题出现的原因:

为什么我可以将int转换为void*,但不能浮动到void*?

c c++ objective-c

13
推荐指数
2
解决办法
4068
查看次数

为什么Apple之前是typedef引用(指针)类型但现在不是?

我一直想知道为什么Apple在Core Foundation中使用了类型为指针类型的数据类型,而在Cocoa中却没有.

作为一个例子,你会引用一个UIColor对象,就像UIColor *对CGColor对象的引用一样CGColorRef?还是NSURL *CFURLRef?为什么不总是使用CGColor *CFURL *?或者相反,为什么没有UIColorRefNSURLRef类型,因为你从来没有访问UIColorNSURL直接访问?

或者例如,它为什么id而不是id *,因为它实际上是一个指针,实际上可以强制转换为void *

具体来说,是否有一些原因让Apple习惯在旧框架中执行此操作,但是在Cocoa中停止了这样做?这只是风格问题吗?

cocoa macos-carbon objective-c core-foundation

7
推荐指数
1
解决办法
297
查看次数

在Objective C中,"id"与C中的"void*"相同,以及程序在方法调用期间如何告诉类?

在Objective C中,idvoid *C 完全相同?(通用指针类型).

如果是这样,我们使用的时候

id obj = [[Fraction alloc] init];
[obj methodName];
obj = [[ComplexNumber alloc] init];
[obj anotherMethodName];
Run Code Online (Sandbox Code Playgroud)

当调用该方法时,程序以什么方式知道哪个类obj是什么?

objective-c

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

void*和id有什么区别?

可能重复:
id和void之间的客观c差异*

例如,UIView动画委托回调方法具有以下参数:

context:(void*)context
Run Code Online (Sandbox Code Playgroud)

为什么不简单的id?如果我不关心语境,我总是通过nil.但是当我想要一个时,我会传递这个对象.有什么不同?为什么他们喜欢void*over id?

iphone objective-c ipad

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

为什么"(UIButton*)发件人"而不是"UIButton*发件人"?

在Objective-C中,"(UIButton*)发送者"是什么意思,为什么它不是"UIButton*sender"?或者一些NSObject代替UIButton.这更像是关于星号优先级的问题......

- (IBAction)digitPressed:(UIButton *)sender {
   //...
}
Run Code Online (Sandbox Code Playgroud)

pointers objective-c operator-precedence ios

2
推荐指数
1
解决办法
657
查看次数

在objective-c函数中使用*指针?(2个例子)

我试图在objective-c中理解这一点:

在这个例子中,indexPath是一个指针,但我们在函数中"按原样"使用它:indexPath.section而不是(例如)*indexPath.section(带有*):

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    return (indexPath.section == 0) ? nil : indexPath;
}
Run Code Online (Sandbox Code Playgroud)

所以,在objective-c中,我们不需要添加一个*来获取指针所指向的变量的内容......?

但是我找到了这个函数,它们*在函数内部使用了一个指针(on reverse):

NSInteger lastNameFirstNameSort(id person1, id person2, void *reverse)
{
    NSString *name1 = [person1 valueForKey:LAST];

    //...

    if (*(BOOL *)reverse == YES) {
        return 0 - comparison;
    }
Run Code Online (Sandbox Code Playgroud)

对于id变量,它们使用变量名称:例如:person1

那么,有人可以解释一下这两个例子之间的区别:
为什么在第一个例子中,我们不添加一个*关于indexPath,
为什么我们不在变量*上添加它id,我们*reverse在第二个例子中使用它?

谢谢

pointers objective-c

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

为什么不在初始化时使用NSObject而不是id

创建新对象并初始化时,为什么要使用id?我们不能使用(NSObject*)吗?

objective-c nsobject

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