小编Cyp*_*ian的帖子

用于iPhone的用户定义的运行时属性无法正常工作

我有一个奇怪的问题.

我正在尝试在IB中设置用户定义的运行时属性.如下所示,我在viewController中设置了NSString statID属性,并希望在IB中为其提供测试值00000

用户定义的运行时属性

当我编译时,我在构建时遇到此错误:"在10.6之前的Mac OS X版本上用户定义的运行时属性"

我知道我可以在iOS中从这里找到的iOS文档设置用户定义的属性到下面的部分:"为自定义对象配置运行时属性"

知道为什么它会给我错误吗?

iphone interface-builder

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

如何访问对象ID标识属性

嗨,大家好.

第1部分.在Identity选项卡下的IB中,您可以找到名为"Object ID"的属性.我找不到从代码中获取此ID的方法.哦,我知道标签属性,但它不是我需要的.

第2部分.我基本上想获得一个触摸了它的UIComponent的唯一对象ID.我已经有了UITouch对象.

谢谢.

iphone objective-c interface-builder

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

NSNotification removeObserver问题

我要么是大脑受损了,要么是我缺少一些NSNotificationCenter

问题是,如果我创建一个观察者,并在下一行将尝试删除它,如下所示:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(removeAllVisibleMapViews) name:@"ClearVisibleMaps" object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self forKeyPath:@"ClearVisibleMaps"];
Run Code Online (Sandbox Code Playgroud)

我明白了

*** Terminating app due to uncaught exception 'NSRangeException', reason: 'Cannot remove an observer <MyApp 0x592db70> for the key path "ClearVisibleMaps" from <NSNotificationCenter 0x4e0fbb0> because it is not registered as an observer.'
Run Code Online (Sandbox Code Playgroud)

我添加和删除观察者一行一行只是为了说明一点.在我的代码中,我将在dealloc中使用remove.

所以任何想法为什么它告诉我,我没有首先添加和观察者?

iphone objective-c nsnotificationcenter ios

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

如何转换/使用CC_SHA1方法,以便它可以在64位系统中使用

我正在转换我的应用程序在64位系统上工作,我一直试图正确使用内置CC_SHA1方法.

我收到警告:

隐式转换失去整数精度:"NSUInteger"(又名"无符号长")为"CC_LONG"(又名"无符号整型")

当试图传递:data.lengthCC_SHA1方法中.

data.lengthNSUInteger

CC_SHA1 方法定义是:

extern unsigned char *CC_SHA1(const void *data, CC_LONG len, unsigned char *md)
Run Code Online (Sandbox Code Playgroud)

哪里CC_LONG是32位unsigned integer.

如何更改才能使用 CC_LONG64

typedef uint64_t CC_LONG64;
Run Code Online (Sandbox Code Playgroud)

这是我得到上述警告的转换方法:

+(NSString*)sha1:(NSString*)input
{
    const char *cstr = [input cStringUsingEncoding:NSUTF8StringEncoding];
    NSData *data = [NSData dataWithBytes:cstr length:input.length];

    uint8_t digest[CC_SHA1_DIGEST_LENGTH];

    CC_SHA1(data.bytes, data.length, digest);

    NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];

    for(NSInteger i = 0; i < CC_SHA1_DIGEST_LENGTH; i++)
        [output appendFormat:@"%02x", digest[i]];

    return output;

}
Run Code Online (Sandbox Code Playgroud)

iphone 64-bit objective-c ios

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

绘制成CGImageRef

我想创建一个CGImageRef并为它绘制点.

用于创建空CGImageRef并能够绘制到其上的上下文.CGContextRef还是CGBitmapContextRef?

如果你可以提供代码来创建一个空的CGImageRef图像并绘制它,我将不胜感激.

iphone graphics cgcontext

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

适用于Mac OS X的UIDevice类?

我正在尝试将我的一个iOS应用程序移植到Mac OS X,我很难找到UIDeviceOS X的类似对象.我有兴趣获取设备的名称,例如"MacBookAir".

编辑/答案
正如Josh Caswell指出的那样,你可以使用SCDynamicStoreCopyComputerName密钥.

这是代码:

+ (NSString *)computerName {
   return [(id)SCDynamicStoreCopyComputerName(NULL, NULL) autorelease];
}
Run Code Online (Sandbox Code Playgroud)

macos cocoa ios osx-lion

7
推荐指数
2
解决办法
4251
查看次数

如何在NSMutableArray中存储CGGradientRef

我在NSMutableArray中存储CGGradientRef的任务有问题.我需要包装它以将其存储在数组中以及将其解包的内容.

谢谢.

iphone graphics

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

不调用GCDAsynSocketDelegate didReadData方法.使用GCDAsynSocket

我试图简单地使用GCDAsyncSocket发送和接收消息,但无法使其工作.

我正在成功建立连接并写入消息,但是当涉及到阅读时,我的委托从未被调用过.

我正在使用ios5和这个设置:

客户:

-(void) connectToHost:(HostAddress*)host{

    NSLog(@"Trying to connect to host %@", host.hostname);

    if (asyncSocket == nil)
    {
        asyncSocket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];

        NSError *err = nil;
        if ([asyncSocket connectToHost:host.hostname onPort:host.port error:&err])
        {
            NSLog(@"Connected to %@", host.hostname);

            NSString *welcomMessage = @"Hello from the client\r\n";
            [asyncSocket writeData:[welcomMessage dataUsingEncoding:NSUTF8StringEncoding] withTimeout:-1 tag:1];

            [asyncSocket readDataWithTimeout:-1 tag:0];
        }else
            NSLog(@"%@", err);
    }

}
Run Code Online (Sandbox Code Playgroud)

不调用Delegate didReadData方法

-(void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag{

    NSLog(@"MESSAGE: %@", [NSString stringWithUTF8String:[data bytes]]);

}
Run Code Online (Sandbox Code Playgroud)

服务器

-(void)viewDidLoad{

    asyncSocket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];

    connectedSockets …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c ios5 cocoaasyncsocket gcdasyncsocket

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

为什么在ReactiveCocoa中调用信号两次?

我正在使用https://github.com/ReactiveCocoa/ReactiveCocoa实现我的第一个代码.

用于登录用户.该行[subscriber sendNext:user];被调用两次,但我希望只有一行.并且根本没有调用地图(因此永远不会调用自动登录)

这是我的实施:

-(RACSignal *) login:(NSString *)email pwd:(NSString *)pwd
{
    DDLogInfo(@"Login user %@", email);

    RACSignal *login = [RACSignal createSignal:^ RACDisposable *(id<RACSubscriber> subscriber)
    {        
        [PFUser logInWithUsernameInBackground:email password:pwd block:^(PFUser *user, NSError *error) {

            if (error) {
                [subscriber sendError:error];
            } else {
                [subscriber sendNext:user];

                [subscriber sendCompleted];
            }
        }];

        return nil;
    }];

    [login map:^(PFUser *user) {
        return [self autoLogin:user];
    }];

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

这样称呼:

NSString *email = data[@"email"];
NSString *pwd = data[@"pwd"];
[SVProgressHUD showWithMaskType:SVProgressHUDMaskTypeBlack];

RACSignal *login = [[SyncEngine server] …
Run Code Online (Sandbox Code Playgroud)

objective-c reactive-programming ios reactive-cocoa

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

应用内购买取消按钮使应用崩溃,日志中没有任何信息

我打电话SKPaymentQueue.default().restoreCompletedTransactions(),在 iOS 询问我的密码并选择“取消”后,应用程序将在没有日志的情况下崩溃。

有时,应用内购买会在没有更多信息或错误的情况下崩溃。我用IAPHelper. 有时当我调用SKPaymentQueue.default().add(payment).

操作系统:iOS 10
Xcode 8.0
语言:Swift 3

storekit in-app-purchase ios swift ios10

5
推荐指数
0
解决办法
146
查看次数