小编hyp*_*ypt的帖子

使用__weak修改实现中参数的存储

__weak在方法的实现签名中使用存储修饰符是否有效?特别是如果它不是方法的公共签名的一部分?例如:

- (UIView *)tableView:(__weak UITableView *)tableView viewForHeaderInSection:(NSInteger)sectionIndex
{
    UIView *view = [ABHeaderView view];
    view.actionBlock = ^{
        [tableView doSomething];
    }
    // ...
    return view;
}
Run Code Online (Sandbox Code Playgroud)

这是否正确tableView用作弱指针?或者我应该真的做一些类似的事情__weak *weakTableView = tableView;weakTableView在街区内使用?

我没有收到任何警告或错误,并且clang Static Analyzer不会发出任何警告.

memory-management objective-c objective-c-blocks automatic-ref-counting

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

如何将我的Xcode项目转换为使用ARC(自动引用计数)?

当我运行Convert to Obj-C时,它首先运行Precheck.我希望Precheck忽略一些文件,我想我可以在这些文件上设置编译器标志-fno-objc-arc.但Precheck阶段似乎忽略了那个标志(并重置它)......所以我真的不知道如何超越Precheck.

objective-c xcode4 automatic-ref-counting

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

Objective-C SHA2哈希与非ASCII无法正常工作

我正在使用xcode,这是我的sha512方法:

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

    uint8_t digest[CC_SHA512_DIGEST_LENGTH];

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

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

    for (int i = 0; i < CC_SHA512_DIGEST_LENGTH; i++) {
        [output appendFormat:@"%02x", digest[i]];
    }

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

当我尝试通过输入"测试",则返回:"ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff"它匹配其他SHA512哈希工具(包括我的Java程序和"http://hash.online-convert.com/sha512-generator").

但是,当我输入像"é"这样的非ascii字符时,它会返回与我所有其他sha512工具不同的东西.对于输入"é",我的方法返回:"60313f8521d3016916d876f7ad11cf42a30dfd4ff9bc557f1e2f90e0d37c56b76ab5e42c8a16db20c18086b0d769c08542429c262cc21ee4fba02bfc689a4797"当其他工具(包括一次我的Java程序和"http://hash.online-convert.com/sha512-generator")返回"9e2ad28633f24451bd4f3c1cb20586a21a44c3aeedbdc01b9cc8fa72917ea7bd689c82b8bf1fef89b911cf8cc46fa2c1ccc10087b2094fd4d3350ecd88526a2c".

我错过了什么吗?有关于此的任何想法?谢谢!

hash objective-c sha2 sha512 ios

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

使用CIImage添加纯色边框

我正在寻找一种方法,使用Core Image为现有图像添加纯色边框.我找到了过滤器列表参考,但没有人可以做到.

救命 !!

iphone objective-c ios

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

添加MKMapView导致iOS 7中的状态栏问题

我正在使用iOS 7解决状态栏问题

if(st.version == 7)
{
    CGRect screen = [[UIScreen mainScreen] bounds];
    CGRect frame = self.navigationController.view.frame;
    frame.origin.y = 20;
    frame.size.height = screen.size.height - 20;
    self.navigationController.view.frame = frame;
}
Run Code Online (Sandbox Code Playgroud)

因为我正在使用导航控制器并使用导航控制器从一个推送到另一个[self.navigationController pushViewController:newone animated:YES];.它适用于所有视图控制器.但是,如果viewcontroller在xib中有mkmapview,则会出现ios 7的状态栏问题.

如果我删除mapview表单xib并推送到该视图控制器意味着,它就像是,

在此输入图像描述

如果我通过下面的代码添加mapview,

mapView = [[MKMapView alloc] initWithFrame:CGRectMake(0, 100, 320, 100)];
[self.view addSubview:self.mapView];
Run Code Online (Sandbox Code Playgroud)

看起来像,

在此输入图像描述

怎么解决这个?

objective-c statusbar mkmapview ios ios7

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

在块中保留自我的危害是什么?(Objective-C,GCD)

在许多关于如何使用块和GCD的指南中,总是提到一个提示:不要在块中保留self.

细节是在定义一个块时,如果你引用self或者我自己的ivar,那么block会保留self.因此,解决方法是使用__block修饰符来获取weakSelfweakIvar.

但是不这样做有什么害处呢?如果块保留自我,它应该在块完成时释放自我(我是否正确?).因此,最终自我的参考计数是平衡的.我知道如果自我保留了块并且块保留了自身,那么它将是一个保留周期.块和self都将被解除分配.但是如果使用GCD,自我不保留块,为什么不让块保留自己?

objective-c grand-central-dispatch objective-c-blocks

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

ARC问题 - 无法通过委托方法?

这是我的情景.我有一个类A.在它的实现中我创建了类型B的对象并将B的委托设置为self(所以B.delegate = self在A类的实现中的某个地方).

A类有一个实例方法 - (void)printThis;

现在在B的实现中,当我尝试做的时候[delegate printThis];,它给了我这个错误:"没有已知的选择器print的实例方法这个"

当然,这是我启用ARC的时候.上面的委托模式曾经在没有ARC的iOS 4.x中正常工作.当我关掉ARC时它仍然会这样做.ARC与将消息传递给代表有什么关系?

骨架代码:

@class B;

@interface A: blah blah
{
    B objB;
}

-(void) printThis;
Run Code Online (Sandbox Code Playgroud)

上午

objB = [[B alloc] init];
objB.delegate = self;

- (void)printThis {
    //doSomething
}
Run Code Online (Sandbox Code Playgroud)

BH

@interface B: blah blah
{
    //id delegate; //used to be there, now I just property & synthesize
}

@property (nonatomic,weak) id delegate;
Run Code Online (Sandbox Code Playgroud)

BM

@synthesize delegate;

[delegate printThis]; //error with ARC ON, works with OFF
Run Code Online (Sandbox Code Playgroud)

重要编辑:

请注意,这种情况会发生在这里和那里.例如,我在A中有一些其他方法,如printThat等,它们可以正常工作.我对发生的事情毫无头绪!

iphone objective-c ios automatic-ref-counting

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

检查API的响应是否是有效的JSON

有没有办法NSJSONSerialization检查是否NSData是有效的JSON?如果API由于某种原因返回无效的JSON,我不希望应用程序出错.

NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]];
NSError *error;
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
Run Code Online (Sandbox Code Playgroud)

json objective-c ios ios5 nsjsonserialization

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

由于无法加载XCode 6.3 - > Nib

我今天将我的XCode从6.2更新到6.3.我适应一切变化迅速,但是当我运行应用程序,我为每一个NIB错误,我尝试加载具有~ipad~iphone.(无法加载NIB)

没有那个设备修改器的笔尖像往常一样加载.如果我删除了~iphone或者~ipad,可以再次找到笔尖,但显然没有解决方案,因为它是一个通用应用程序.

每个其他文件类型也是如此,我尝试通过代码加载,例如故事板.

iphone xcode xib ios xcode6.3

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

崩溃发生在iOS 5上

所以我的应用程序被发送并被拒绝.他们说它在iOS 5上崩溃了.我仍然是iPhone编程的新手,我在阅读他们发送的崩溃日志时遇到了困难.这说明了崩溃日志.

我们发现您的应用程序在运行iOS 5的iPhone 4上崩溃,这不符合App Store审核指南.

你的应用程序在发布时同时破坏了Wi-Fi和蜂窝网络.

如果你可以给我任何帮助,指导我去哪里看.或者如何能够阅读其中一个我会很感激.除了苹果的解释,如何阅读这些.我发现他们的解释更加令人困惑.

以下是崩溃日志:

Incident Identifier: 797ABD0E-0C64-41C9-9A65-2605C0EC959E
CrashReporter Key:   4ac5bad7693f6fffd20e043218a547ee54565eb3
Hardware Model:      iPhone3,1
Process:         Stoners Handbook [688]
Path:            /var/mobile/Applications/D5E8D62A-D69D-4764-BB2A-0FA692427030/Stoners Handbook.app/Stoners Handbook
Identifier:      Stoners Handbook
Version:         ??? (???)
Code Type:       ARM (Native)
Parent Process:  launchd [1]

Date/Time:       2011-10-10 11:04:14.776 -0700
OS Version:      iPhone OS 5.0 (9A334)
Report Version:  104

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x00000000, 0x00000000
Crashed Thread:  0

Last Exception Backtrace:
(0x30fee8bf 0x381931e5 0x30fee7b9 0x30fee7db 0x331fc747 0x331fdbb9 0x33136a45 0x32fc0227 0x32fba313 0x32f88921 0x32f883bf 0x32f87d2d 0x33b73e13 …
Run Code Online (Sandbox Code Playgroud)

iphone ios ios5

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