小编Fat*_*tie的帖子

ios facebook sdk 4.0登录错误代码304

我刚刚更新了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,我错过了什么?

objective-c ios facebook-sdk-4.0

64
推荐指数
5
解决办法
3万
查看次数

开发团队没有在Xcode中展示

我是一名自雇的iOS开发人员,因此拥有自己的iOS发布会员资格.

几天后,我在一个团队中担任开发人员.我的苹果帐户已添加到他们的iTunes Connect/Users和Roles中.它可以工作,因为我可以访问我们开发的当前应用程序的应用程序详细信息.

但是,我无法在Xcode上做到正确.所以Xcode说捆绑ID不对,因为我没有配置文件.

在"项目>常规>身份>团队"中,我只能选择自己的帐户,而我看不到我所属的新团队.我在Xcode首选项的"帐户"页面中都没有看到它.

团队负责人为我创建了配置文件.它没有解决问题.

问题:如何在Xcode中添加我们所属的新团队?


注意 - 苹果终于解决了这种疯狂,

他们终于在2018年修复它:

在此输入图像描述

itunesconnect certificate ios provisioning-profile

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

如何从列表中"出列"元素?

我有一张名为_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"处是这样的吗?(推/弹工作在列表的"尾部"或"结尾".)

如果没有,我应该如何删除第一个元素但将其保存在变量中?

c# arrays

48
推荐指数
3
解决办法
5万
查看次数

弱者自己去哪儿了?

我经常这样做,

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)

weak-references swift

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

在UILabel上显示iPhone剪切复制粘贴菜单

  1. 我们可以启用一个剪切复制粘贴菜单UILabel,因为它是一个UITextField

  2. 如果没有,我需要转换UILabelUITextField,我如何启用剪切复制粘贴菜单,不允许修改内容?

iphone cocoa-touch ios swift

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

有没有办法让drawRect现在正常工作?

原来的问题...............................................

如果您是drawRect的高级用户,您将知道当然"drawRect"在"所有处理完成"之前不会实际运行.

setNeedsDisplay将视图标记为无效和操作系统,并且基本上等待所有处理完成.在您想要拥有的常见情况下,这可能会令人愤怒:

  • 视图控制器1
  • 开始一些功能2
  • 逐渐增加3
    • 创造了一个越来越复杂的艺术品和4
    • 在每一步,你setNeedsDisplay(错!)5
  • 直到所有工作完成6

当然,当你执行上面的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)

iphone cocoa quartz-graphics runloop ios

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

更改Xcode 5中所有新文件的copyright/top-comment /"header"

在Xcode5中创建任何文件时,文件的顶部如下所示:

在此输入图像描述

有没有办法改变该模板或创建,使它看起来不同?

当我说"改变"时,这是一个可能的例子:

在此输入图像描述

请注意,我知道如何更改名称,产品名称,公司名称等. 我想知道如何更改实际的"模板"本身.

(如果有可能.)

  1. 我根本不在乎,如果我每次升级Xcode时都必须重做更改

  2. 这仅适用于Xcode 5.不是Xcode 4.

  3. 我已经知道如何更改名称和其他个别项目; 我想整体改变整个"模板"

我很欣赏这很多根本不可能或者可能不切实际(也许你必须改变几十个文件,或者其他一些文件).如果是这样的话,我非常感谢这些信息,谢谢.

请注意:我在网上注意到,每当有人问这个问题时,很多人都会通过解释如何在Xcode中制作"新模板"来回答.例如,新类型或类别的新模板.(可能一旦人们看到"模板"这个词,他们就会立即开始输入如何在这个意义上添加新"模板"的解释.)要清楚我唯一要问的是,如何更改页面顶部的"标准文本"或"版权文本" - 所有页面 - 就是这样.

(很难知道如何参考上面两张图片中显示的文字..如果你说"标题"它会让人想到一个.h文件;另一方面它并不是真正的版权声明,因为版权只是它的一部分.我猜它是"文件评论栏的顶部".但由于与其他术语的混合,谷歌无法上网.)

xcode templates xcode5

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

Swift 3:数组到字典?

我有一个大型数组,需要通过键(查找)访问它,所以我需要创建字典.在Swift 3.0中是否有内置函数可以这样做,还是我需要自己编写?

首先,我将需要它用于具有键"String"的类,稍后我可以编写用于通用目的的模板版本(所有类型的数据和键).

arrays dictionary filter swift

35
推荐指数
8
解决办法
3万
查看次数

有没有办法"找到神秘的保留"......?

最近我修了某人的代码.有一个大课堂不会dealloc.您必须使用5或6个版本来获取它以获得dealloc.

我仔细查看了大班,最终找到了需要发布的各种东西.

这让我想到:只需要一些非常简单的方法来"找到"物体上的所有保留物.我是对的吗?

那么,有没有一种简单的方法来"找到对象上的所有保留"?是否有其他人都知道的XCode或Instruments中的按钮?

当你找不到像这样的谜团时你会怎么做?

所以在iOS世界中,如果有人知道"显示所有保留来自此对象的位置"按钮 - 谢谢!

PS注意没有泄漏,这个问题与泄漏完全无关.对象简单地"完全正确"不会释放.


后来......

法比奥真正令人震惊的解决方案:

法比奥为这个问题提供了令人震惊的解决方案.九个字,这里是:

-(id)retain
    {
    NSLog(@"%@", [NSThread callStackSymbols]);
    return ([super retain]);
    }
Run Code Online (Sandbox Code Playgroud)

这在许多情况下非常有用,并且会带来许多其他有用的东西.法比奥,你可能每年为我节省了两个人工周的工作.谢谢!

顺便说一句,如果你刚刚掌握了这个并且在输出上苦苦挣扎,我看到通常会有许多以"UINib instantiateWithOwner:"为特色的块.看起来这些将首先出现,重要的大块将会出现.

iphone memory-management retain xcode4

34
推荐指数
3
解决办法
5321
查看次数

设置`UITextView`和`UITextField`的最大字符数

我想在a UITextView和a中设置允许输入的最大字符数UITextField.这个数字将以小标签显示(供用户参考,Twitter风格).

uitextfield uitextview ios swift

32
推荐指数
6
解决办法
3万
查看次数