小编Yev*_*nin的帖子

Facebook共享内容仅在iOS 9中共享URL

分享FBSDKShareLinkContentFBSDKShareDialog在iOS 8的精品工程,但无法分享imageURL,contentTitle,contentDescriptioniOS上的9个设备.

该应用程序使用iOS 9 SDK,Xcode 7,Facebook SDK 4.7.0 构建,完成了为iOS9准备应用程序中提到的所有操作.该应用程序目前在App Store中不可用,Facebook应用程序处于开发模式.

呈现对话框的代码非常常见(Swift 2.0):

let content = FBSDKShareLinkContent()

content.contentURL = <URL to the app in the App Store>
content.imageURL = <valid image URL>
content.contentTitle = <some title>
content.contentDescription = <some descr>

let shareDialog = FBSDKShareDialog()
shareDialog.fromViewController = viewController
shareDialog.shareContent = content
shareDialog.delegate = self

if !shareDialog.canShow() {
    print("cannot show native share dialog")
}

shareDialog.show()
Run Code Online (Sandbox Code Playgroud)

在iOS 9上,Facebook SDK提供了没有图像,标题和描述的原生对话框: 在iOS 9上,Facebook SDK提供了没有图像,标题和描述的原生对话框

在显示对话框时,当在iOS 9设备上安装FB应用程序时,会出现错误,通过向Info.plist添加相应的URL解决此问题无法解决问题.它只是不再出现的日志语句. …

iphone facebook ios facebook-ios-sdk ios9

38
推荐指数
3
解决办法
4万
查看次数

适用于iOS应用的Fabric Crashlytics多种环境

Fabric Crashlytics Advanced Setup中有一个包含多个环境的应用程序部分,建议为每个版本使用单独的组织.

我为每个Build配置创建了3个独立的组织:

  • MyApp的
  • MyApp(调试)
  • MyApp(AdHoc)

我的运行脚本构建阶段中有条件运行Fabric框架脚本,其中包含不同的API密钥构建密钥,我可以确认条件是正确的,但我仍然没有更新API密钥我的plist(我猜是Fabric使用的).似乎Fabric正在将我的崩溃发送到我使用Fabric应用程序登上的最后一个API密钥/组织.有什么我想念的吗?我知道我可以使用[Crashlytics initWithApiKey:@""],但从我读过的内容来看,这被认为是遗留代码.

这是我的运行脚本构建阶段:

if [ "${CONFIGURATION}" = "Distribution" ]; then
echo "Building Fabric for Distribution."
./Fabric.framework/run dist_api_key dist_build_secret
fi

if [ "${CONFIGURATION}" = "AdHoc" ]; then
echo "Building Fabric for AdHoc."
./Fabric.framework/run adhoc_api_key adhoc_build_secret
fi

if [ "${CONFIGURATION}" = "Debug" ]; then
echo "Building Fabric for Debug."
./Fabric.framework/run debug_api_key debug_build_secret
fi
Run Code Online (Sandbox Code Playgroud)

原始Q/A.

ios crashlytics twitter-fabric

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

通过-weak_library弱链接静态库

题:

是否可以弱连接静态库(Obj-C)?

简短细节

我确实希望我的自定义静态框架(MyFramework.framework)弱链接我的其他自定义静态库(libMyLibrary.a).

libMyLibrary.a背后的功能是可选的,如果没有 libMyLibrary.a被任何使用MyFramework.framework的第三方应用程序链接,则可以省略.

我在用-weak_library.我的测试应用抱怨说,静态链接无法找到在MyLibrary的符号MyClassMyFramework S' ABCTracker.o符号:

Undefined symbols for architecture arm64:
  "_OBJC_CLASS_$_MyClass", referenced from:
      objc-class-ref in MyFramework(ABCTracker.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

如何正确设置弱链接?

全部细节

建立

  • Xcode项目构建一个静态Mach-O二进制文件并将其捆绑到一个静态框架中.结果是MyFramework.framework包.
  • 其他项目构建一个静态的Mach-O二进制文件,结果是一个静态的lib文件libMyLibrary.a,带有一个标题MyLib.h
  • libMyLibrary.a将从MyFramework.framework目标的Build Phases > Link Binary With Libraries中删除( …

xcode linker objective-c static-libraries ios

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

该模块需要导入,但在Xcode 7.3中以删除线字体显示

更新:

@JAL已经指出了接受的SO答案,它表明这个问题中描述的行为是一个现在应该被修复的BUG.但是没有迹象表明此修复程序何时生效.

以前的更新:

正如这个答案所暗示的那样,当Xcode import <module_name>决定导入是多余的时,Xcode会以删除线字体显示(我在下面的原始问题中假设). 没有import <module_name>编译器失败的错误.

这种不端行为是我原来问题的主题.是错误还是我遗漏了某些东西(例如正确链接到框架等等)?

原始问题:

当我输入导入模块Xcode时,用strikethrough字体显示所需的模块名称是什么意思?

在此输入图像描述

描述:

我想创建简单的GKEntity子类.所以,在新.swift文件中我添加以下内容:

class TBTEntity: GKEntity {

}
Run Code Online (Sandbox Code Playgroud)

我知道它GKEntity本身就是GameplayKit框架的一部分.所以,我必须导入框架,否则,我看到错误.

在此输入图像描述

使用未声明类型'GKEntity'

用户体验视角下的Strikethrough字体表明我喜欢"你不需要这个"或"模块不可用",但实际上这似乎都不是真的.

Xcode 7.3(7D175)

xcode ios swift xcode7 swift2

7
推荐指数
0
解决办法
242
查看次数

在设备上构建和运行时,仅将嵌入式框架与其他动态框架链接失败

TL;博士

将嵌入式框架与其他框架链接,并且required code signature missing在设备上构建和运行时不要将其他框架与您的应用程序相关联.

描述:

建立:

我的设置非常简单(Swift 2.3和Xcode Xcode 8.0; Build版本8S162m):

  • 使用Carthage(0.17.2)我用8.0和更高版本构建了Other.frameworkxcodebuildTOOLCHAINS=com.apple.dt.toolchain.Swift_2_3 carthage build --platform iOS
  • MyApp嵌入了My.framework.
  • 应用程序和框架项目位于一个Xcode工作区下.
  • 只是Other.framework链接到My.framework(这意味着,MyApp根本没有链接到Other.framework).这里的要点是,MyApp不需要使用Other.framework API.

问题:

一切似乎工作正常,直到我在设备上构建和运行应用程序.该应用程序已启动,并且该过程因以下Xcode错误而中止:

dyld: Library not loaded: @rpath/Other.framework/Other  
  Referenced from: /private/var/containers/Bundle/Application/DCF0331F-FF23-43CF-AE79-B3857D5A6EE3/MyApp.app/Frameworks/My.framework/My  
  Reason: no suitable image found.  Did find:  
  /private/var/containers/Bundle/Application/DCF0331F-FF23-43CF-AE79-B3857D5A6EE3/MyApp.app/Frameworks/My.framework/Frameworks/Other.framework/Other: required code signature missing for '/private/var/containers/Bundle/Application/DCF0331F-FF23-43CF-AE79-B3857D5A6EE3/MyApp.app/Frameworks/My.framework/Frameworks/Other.framework/Other'  
Run Code Online (Sandbox Code Playgroud)

我检查了Other.framework的签名,看起来对我来说很好.此外,

解决方案(解决方法)

MyAppOther.framework链接.可怕......这感觉很糟糕.

将完全相同的二进制 …

xcode xcodebuild ios ios-frameworks swift2

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

+ [UIPasteboard _accessibilityUseQuickSpeakPasteBoard]:无法识别的选择器发送到课堂

我在Apple Dev论坛上问过这个问题,但仍然没有得到答案.

我们100%iOS 8设备崩溃:

+[UIPasteboard _accessibilityUseQuickSpeakPasteBoard]: unrecognized selector sent to class
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪是:

Thread : Fatal Exception: NSInvalidArgumentException
0  CoreFoundation                 0x2889ec1f __exceptionPreprocess + 126
1  libobjc.A.dylib                0x36049c8b objc_exception_throw + 38
2  CoreFoundation                 0x288a3f55 __CFExceptionProem
3  CoreFoundation                 0x288a1def ___forwarding___ + 354
4  CoreFoundation                 0x287d3df8 _CF_forwarding_prep_0 + 24
5  UIAccessibility                0x331fc157 +[UIPasteboard_QSExtras pasteboardWithName:create:] + 30
6  MyApp                          0x002eb507 -[TJEventOptimizer .cxx_destruct]
7  MyApp                          0x002eb28b -[TJEventOptimizer .cxx_destruct]
8  MyApp                          0x002f0c2b -[TJEventOptimizer .cxx_destruct]
9  MyApp                          0x002eeedb -[TJEventOptimizer .cxx_destruct]
10 Foundation                     0x295adb5b __NSThread__main__ + 1118
11 libsystem_pthread.dylib …
Run Code Online (Sandbox Code Playgroud)

accessibility objective-c ios ios8

5
推荐指数
1
解决办法
1021
查看次数

调试为什么SKScene init(fileNamed :)返回nil

TLTR:

问题: SKScene子类的init(fileNamed:)返回nil

原因:.sks文件不以第二初始化调用时存在.该问题以某种方式与ODR实现和/或行为有关.

描述:

用游戏构建的游戏SpriteKit.我的SKScene子类的init(fileNamed:)返回nil.我想了解"为什么?" 如何?" 调试此问题.

我初始化SKScene子类的代码:

/// the hierarchy: SKScene -> TBTBaseScene -> TBTLevelScene

let sceneType: TBTBaseScene.Type = TBTLevelScene.self
let fileName = "Level1"

let scene = sceneType.init(fileNamed: fileName)
Run Code Online (Sandbox Code Playgroud)

几点注意事项:

  1. 此代码在运行时期间的某个时刻起作用,但在另一个时则不起作用.
  2. 当目标通过Xcode构建时,转到Products - > AppName.app,右键单击"Show in Finder",没有Level1.sks.也许没关系,因为该应用程序使用ODRLevel1.sks标记为"Level1"标记,即使它位于初始安装标记中
  3. 当断点设置为let sceneType:...line时,我可以通过各自的子类和fileNames轻松创建其他游戏场景,但expression TBTLevelScene(fileName:"Level1")返回nil.
  4. 我试图检查Level1.sks主捆绑中是否存在,但是对于所有场景,ALWAYS下面的代码都说"FILE NOT AVAILABLE",所以这种方法似乎是错误的.
  5. 游戏的场景加载架构由 …

xcode ios sprite-kit swift on-demand-resources

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

“现在节省 38%”C 字符串中止程序

TL; 博士

在C字符串"% n"用空格之间'%''n'字符(如在“保存现在38%”的字符串)被视为"%n",这被认为是因为最新的OS版本中的漏洞,并导致中止程序。

(请参阅 UPD 1 和 UPD 2)

背景

我正在调查我的应用程序中的登录问题。该应用程序从服务器接收一些字符串,我们使用类似于NSLog. 我们称该函数的格式为:

MyLog(@"%@", message);
Run Code Online (Sandbox Code Playgroud)

在一种情况下,消息包含文本“现在节省 38%”。此时应用程序崩溃。

问题

在调查时,我能够查明问题所在。完整代码如下。

#define FOO(FORMAT, ...) (\
{\
char *str;\
str = [[NSString stringWithFormat:FORMAT, ##VA_ARGS] UTF8String];\
str;\
}\
)\

#import "MyClass.h"

@implementation MyClass

- (instancetype)init
{
    self = [super init];
    if (self) {
        char *foo = FOO(@"%@", @"Save 38% now");
        printf(foo);
    }
    return self;
}

@end
Run Code Online (Sandbox Code Playgroud)

在任何地方实例化类,

MyClass *my = [[MyClass alloc] …
Run Code Online (Sandbox Code Playgroud)

c freebsd objective-c stdio char

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