这是我的代码中分配对象的常见模式,让它使用完成处理程序执行一些操作并在处理程序中释放它:
LongOperation *foo = [[LongOperation alloc] init];
[foo runWithCompletion:^{
// run some code and then:
[foo autorelease];
}];
Run Code Online (Sandbox Code Playgroud)
这很好用,但是当我尝试将代码转换为ARC时,Xcode正确地抱怨它不能简单地autorelease从块中删除,因为这会使foo对象在离开作用域后被释放.
那么在ARC下编写这种模式的好方法是什么?我可以为foo:引入一个实例变量:
[self setFoo:[[LongOperation alloc] init]];
[foo runWithCompletion:^{
// run some code and then:
[self setFoo:nil];
}];
Run Code Online (Sandbox Code Playgroud)
......但代码不再是可重入的.
memory-management objective-c objective-c-blocks automatic-ref-counting
我想列出与当前帖子具有相同类别的固定数量的最近帖子.这就是我所得到的:
{% for category_name in page.categories limit:1 %}
<h2>Other articles in {{ category_name }}</h2>
<ul>
<!-- now what? -->
</ul>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
我知道site.categories,但我不知道如何下标字典.显然,site.categories.category_name从字面上看,寻找名为"category_name"的类别.
我想在Objective-C应用程序中添加一些自动化性能测试.(这是一款游戏,因此我想通过简单地运行一组测试来查看引擎关键部分的当前性能.)为此,我想编写一些时序支持例程,如下所示:
- (void) benchmarkSelector: (SEL) msg onObject: (id) target
{
// run the selector thousands of times, print detailed stats
}
Run Code Online (Sandbox Code Playgroud)
问题是我对毫秒感兴趣,我担心调用performSelector基准测试代码会使结果偏差很多.你会怎么回事?我应该去objc_msgSend吗?
我想知道如何设置警报视图的委托消息的对齐方式.任何人都有解决方案,PLZ回复一些代码.
我想知道计算器如何精确地工作.例如,sin(M_PI)当以double精度计算时,值不完全为零:
#include <math.h>
#include <stdio.h>
int main() {
double x = sin(M_PI);
printf("%.20f\n", x); // 0.00000000000000012246
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在我肯定想在用户输入sin(π)时打印零.我可以轻松地在1e-15的某个地方绕过来使这个特殊情况起作用,但这是一个黑客,而不是解决方案.当我开始像这样循环并且用户输入类似1e-20的东西时,他们得到零回归(因为四舍五入).当用户输入1/10并=重复点击键时会发生同样的事情- 当他达到舍入阈值时,他会得到零.
然而,有些计算器为sin(π)返回纯零,同时它们可以舒适地处理诸如(1e-20)/ 10之类的表达式.诀窍在哪里?
我试图通过SDK让用户"喜欢"一个页面.用户已登录,我从cookie获得了有效的访问权限.我的APP已经要求权限read_stream和publish_stream.我可以成功地做一些事情,比如张贴到他们的墙上等等.但是当我的APP试图"喜欢"一个页面时,我得到了错误:
OAuthException: (#3) Application does not have the capability to make this API call.
Run Code Online (Sandbox Code Playgroud)
我是否遗漏了其他一些许可,或者我的APP中是否有必须打开的设置?我在这里不知所措.
完整断言如下!
我正在尝试在全新的Sandy Bridge iMac Core i5上以全新的XCode 4安装(4.0.2)打开我们的项目.这个项目在我的旧MacMini和我的合作伙伴的Core 2 Duo iMac上工作并继续工作.
我怀疑这可能是由于这台新机器从未安装过任何旧版本的XCode 4或XCode 3以及旧的SDK.只需4.02,随便随之而来.这是我能想到的唯一......也是我们在机器之间唯一的区别.确实下面指定的文件不存在...所以它产生PCH的问题可能是???
任何人都可以帮忙吗?
我们无法在新机器上打开我们的XCode项目,下面的断言最不友好......
谢谢!
ASSERTION FAILURE in /SourceCache/IDEFoundation/IDEFoundation-287/Framework/Classes/Index/IDEIndex.m:2186
Details: Error launching clang to create PCH file: /Users/sukichima/Library/Developer/Xcode/DerivedData/LeapLanguage-gtjaysymsmxhiifrufylngcjwyxb/Index/PrecompiledHeaders/LeapLanguage_Prefix-bvjcknzwkkcgeydmvtyeuddafzgu_ast/LeapLanguage_Prefix.pch.pth
Error Domain=NSPOSIXErrorDomain Code=2 "The operation couldn’t be completed. No such file or directory"
Object: <IDEIndex: 0x200c257c0>
Method: -createPCHFile:willIndex:arguments:
Thread: <NSThread: 0x2036dfe80>{name = (null), num = 12}
Hints: None
Backtrace:
0 0x0000000100949773 -[IDEAssertionHandler handleFailureInMethod:object:fileName:lineNumber:messageFormat:arguments:] (in IDEKit)
1 0x000000010006d394 _DVTAssertionFailureHandler (in DVTFoundation)
2 0x0000000100564e3d __46-[IDEIndex createPCHFile:willIndex:arguments:]_block_invoke_0 (in IDEFoundation)
3 0x0000000100005fdc __38-[DVTDispatchLock performLockedBlock:]_block_invoke_0 (in …Run Code Online (Sandbox Code Playgroud) 我正在创建一个试图使用"公共"Facebook内容的Web应用程序.
它不是你传统的"Facebook应用程序",因为我实际上并没有注册Facebook用户使用它,但用户将是所有服务器端.
我已经到了某一点,我必须对某些"公共"内容使用"access_token",我已经能够生成app access_token,但这对我感兴趣的公共数据不起作用访问.
access_token是通过创建的
https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=client_credentials
Run Code Online (Sandbox Code Playgroud)
不适合
https://graph.facebook.com/chickfila/notes?access_token=CODE_FROM_ABOVE
Run Code Online (Sandbox Code Playgroud)
无需登录即可公开访问...
http://www.facebook.com/ChickfilA?sk=notes
Run Code Online (Sandbox Code Playgroud)
任何方式给应用程序本身一个用户级access_token?
我拍了一张13.3MB的图像并将其添加到XCode中.我知道在编译时,XCode会执行一些技巧来降低文件大小.我做了这个,在转换成数据后测试图像现在有多大:
UIImage *image = [UIImage imageNamed:@"image.jpg"];
NSData *data = UIImageJPEGRepresentation(image, 1.0);
NSLog(@"length: %i", data.length);
Run Code Online (Sandbox Code Playgroud)
我回来的时间是26758066.如果那是以字节为单位,那么它读取为26.7MB.图像突然变得如此之大?我是否还有另一种方法可以在不首先通过UIImage的情况下以数据形式获取图像?
编辑:进一步的测试表明这是有效的,并带来~13.3MB的数据长度 - 预期的数量:
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"jpg"];
NSData *data = [NSData dataWithContentsOfFile:filePath];
NSLog(@"length: %i", data.length);
Run Code Online (Sandbox Code Playgroud) 使用Xcode 5,我可以手动将配置文件复制到他们需要的位置.Xcode 6的情况并非如此.我已将服务器添加到团队中,但仍然无法构建.我可以在同一台机器上从Xcode构建好.我收到以下消息:
Code Sign error: No matching provisioning profiles found: No provisioning profiles containing one of the following signing identities was found:
Run Code Online (Sandbox Code Playgroud)
它应该工作,因为Xcode工作,但Apple越来越隐藏这些设置,我没有办法解决这个问题.
objective-c ×4
iphone ×3
facebook ×2
ios ×2
xcode ×2
benchmarking ×1
calculator ×1
http ×1
jekyll ×1
nsdata ×1
oauth ×1
osx-server ×1
performance ×1
precision ×1
uiimage ×1
xcode4 ×1