我刚刚更新了facebook sdk v4.0
并根据使用自定义登录UI的教程
-(IBAction)facebookLoginClick:(id)sender {
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logInWithReadPermissions:@[@"email"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error) {
// Process error
} else if (result.isCancelled) {
// Handle cancellations
} else {
// If you ask for multiple permissions at once, you
// should check if specific permissions missing
if ([result.grantedPermissions containsObject:@"email"]) {
// Do work
}
}
}];
}
Run Code Online (Sandbox Code Playgroud)
但结果总是为零,错误代码是304,我错过了什么?
我是一名自雇的iOS开发人员,因此拥有自己的iOS发布会员资格.
几天后,我在一个团队中担任开发人员.我的苹果帐户已添加到他们的iTunes Connect/Users和Roles中.它可以工作,因为我可以访问我们开发的当前应用程序的应用程序详细信息.
但是,我无法在Xcode上做到正确.所以Xcode说捆绑ID不对,因为我没有配置文件.
在"项目>常规>身份>团队"中,我只能选择自己的帐户,而我看不到我所属的新团队.我在Xcode首选项的"帐户"页面中都没有看到它.
团队负责人为我创建了配置文件.它没有解决问题.
问题:如何在Xcode中添加我们所属的新团队?
我有一张名为_deck的卡片列表:
private List<String> _deck = new List<String> {"2h", "3h", "4h", ... }
Run Code Online (Sandbox Code Playgroud)
然后我想从列表中删除一张卡并保存到变量中.我正在尝试:
String p1FirstCard = _deck.RemoveAt(0);
Run Code Online (Sandbox Code Playgroud)
但我收到错误"无法将类型void转换为String".
在C#List中有类似push/pop的东西,但是在List的"head"或"start"处是这样的吗?(推/弹工作在列表的"尾部"或"结尾".)
如果没有,我应该如何删除第一个元素但将其保存在变量中?
我经常这样做,
let when = DispatchTime.now() + 2.0
DispatchQueue.main.asyncAfter(deadline: when) {
beep()
}
Run Code Online (Sandbox Code Playgroud)
在一个应用程序中,我们经常这样做
tickle.fresh(){
msg in
paint()
}
Run Code Online (Sandbox Code Playgroud)
但如果你做这个
let when = DispatchTime.now() + 2.0
DispatchQueue.main.asyncAfter(deadline: when) {
tickle.fresh(){
msg in
paint()
}
}
Run Code Online (Sandbox Code Playgroud)
当然,你必须做这个
let when = DispatchTime.now() + 2.0
DispatchQueue.main.asyncAfter(deadline: when) { [weak self] _ in
tickle.fresh(){
msg in
self?.paint()
}
}
Run Code Online (Sandbox Code Playgroud)
或者,也许这个
let when = DispatchTime.now() + 2.0
DispatchQueue.main.asyncAfter(deadline: when) {
tickle.fresh(){
[weak self] msg in
self?.paint()
}
}
Run Code Online (Sandbox Code Playgroud)
或许这个
let when = DispatchTime.now() …Run Code Online (Sandbox Code Playgroud) 我们可以启用一个剪切复制粘贴菜单UILabel,因为它是一个UITextField?
如果没有,我需要转换UILabel为UITextField,我如何启用剪切复制粘贴菜单,不允许修改内容?
原来的问题...............................................
如果您是drawRect的高级用户,您将知道当然"drawRect"在"所有处理完成"之前不会实际运行.
setNeedsDisplay将视图标记为无效和操作系统,并且基本上等待所有处理完成.在您想要拥有的常见情况下,这可能会令人愤怒:
当然,当你执行上面的1-6时,所有发生的事情是drawRect 仅在步骤6之后运行一次.
您的目标是在第5点刷新视图.怎么办?
解决原始问题............................................. .
总之,您可以(A)背景大画,并调用前景进行UI更新或(B)可争议地有四种"即时"方法建议不使用后台进程.为了起作用的结果,运行演示程序.它有所有五种方法的#defines.
Tom Swift介绍的真正令人震惊的替代解决方案..................
汤姆斯威夫特解释了非常简单地操纵运行循环的惊人想法.以下是触发运行循环的方法:
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate date]];
这是一个真正令人惊叹的工程.当然,在操作运行循环时应该非常小心,并且许多人指出这种方法严格适用于专家.
引起的奇怪问题............................................. .
尽管许多方法都有效,但实际上并没有"工作",因为在演示中你会看到一个奇怪的渐进式减速神器.
滚动到我在下面粘贴的"答案",显示控制台输出 - 您可以看到它逐渐减慢的速度.
这是新的SO问题:
运行循环/ drawRect中的神秘"渐进式减速"问题
这是演示应用程序的V2 ...
http://www.fileswap.com/dl/p8lU3gAi/stepwiseDrawingV2.zip.html
你会看到它测试所有五种方法,
#ifdef TOMSWIFTMETHOD
[self setNeedsDisplay];
[[NSRunLoop currentRunLoop]
runMode:NSDefaultRunLoopMode beforeDate:[NSDate date]];
#endif
#ifdef HOTPAW
[self setNeedsDisplay];
[CATransaction flush];
#endif
#ifdef LLOYDMETHOD
[CATransaction begin];
[self setNeedsDisplay];
[CATransaction commit];
#endif
#ifdef DDLONG
[self setNeedsDisplay];
[[self layer] displayIfNeeded];
#endif …Run Code Online (Sandbox Code Playgroud) 在Xcode5中创建任何文件时,文件的顶部如下所示:

有没有办法改变该模板或创建,使它看起来不同?
当我说"改变"时,这是一个可能的例子:

请注意,我知道如何更改名称,产品名称,公司名称等. 我想知道如何更改实际的"模板"本身.
(如果有可能.)
我根本不在乎,如果我每次升级Xcode时都必须重做更改
这仅适用于Xcode 5.不是Xcode 4.
我已经知道如何更改名称和其他个别项目; 我想整体改变整个"模板"
我很欣赏这很多根本不可能或者可能不切实际(也许你必须改变几十个文件,或者其他一些文件).如果是这样的话,我非常感谢这些信息,谢谢.
请注意:我在网上注意到,每当有人问这个问题时,很多人都会通过解释如何在Xcode中制作"新模板"来回答.例如,新类型或类别的新模板.(可能一旦人们看到"模板"这个词,他们就会立即开始输入如何在这个意义上添加新"模板"的解释.)要清楚我唯一要问的是,如何更改页面顶部的"标准文本"或"版权文本" - 所有页面 - 就是这样.
(很难知道如何参考上面两张图片中显示的文字..如果你说"标题"它会让人想到一个.h文件;另一方面它并不是真正的版权声明,因为版权只是它的一部分.我猜它是"文件评论栏的顶部".但由于与其他术语的混合,谷歌无法上网.)
我有一个大型数组,需要通过键(查找)访问它,所以我需要创建字典.在Swift 3.0中是否有内置函数可以这样做,还是我需要自己编写?
首先,我将需要它用于具有键"String"的类,稍后我可以编写用于通用目的的模板版本(所有类型的数据和键).
最近我修了某人的代码.有一个大课堂不会dealloc.您必须使用5或6个版本来获取它以获得dealloc.
我仔细查看了大班,最终找到了需要发布的各种东西.
这让我想到:只需要一些非常简单的方法来"找到"物体上的所有保留物.我是对的吗?
那么,有没有一种简单的方法来"找到对象上的所有保留"?是否有其他人都知道的XCode或Instruments中的按钮?
当你找不到像这样的谜团时你会怎么做?
所以在iOS世界中,如果有人知道"显示所有保留来自此对象的位置"按钮 - 谢谢!
PS注意没有泄漏,这个问题与泄漏完全无关.对象简单地"完全正确"不会释放.
后来......
法比奥为这个问题提供了令人震惊的解决方案.九个字,这里是:
-(id)retain
{
NSLog(@"%@", [NSThread callStackSymbols]);
return ([super retain]);
}
Run Code Online (Sandbox Code Playgroud)
这在许多情况下非常有用,并且会带来许多其他有用的东西.法比奥,你可能每年为我节省了两个人工周的工作.谢谢!
顺便说一句,如果你刚刚掌握了这个并且在输出上苦苦挣扎,我看到通常会有许多以"UINib instantiateWithOwner:"为特色的块.看起来这些将首先出现,重要的大块将会出现.
我想在a UITextView和a中设置允许输入的最大字符数UITextField.这个数字将以小标签显示(供用户参考,Twitter风格).
ios ×5
swift ×4
iphone ×3
arrays ×2
c# ×1
certificate ×1
cocoa ×1
cocoa-touch ×1
dictionary ×1
filter ×1
objective-c ×1
retain ×1
runloop ×1
templates ×1
uitextfield ×1
uitextview ×1
xcode ×1
xcode4 ×1
xcode5 ×1