AppDelegate警告 Initalizing 'AppDelegate * __strong'

本文介绍了一个在使用ARC时遇到的问题:获取全局AppDelegate时出现警告。通过简单地改变类型强制转换的方式,可以有效地消除这个警告。

使用ARC时,获取全局的AppDelegate会有上面的警告

下面这样写会有警告

AppDelegate *app = [UIApplicationsharedApplication].delegate;

修改为

AppDelegate *app =(AppDelegate*)[UIApplicationsharedApplication].delegate;

这样警告就没有了
### GIDSignIn.sharedInstance signInWithPresentingViewController 方法变更及替代方案 在 Google Sign-In SDK 版本 8.0.0 中,`GIDSignIn.sharedInstance signInWithPresentingViewController:completionHandler:` 方法已被移除。取而代之的是新的接口设计,直接使用 `GIDSignIn.sharedInstance.signIn` 方法,并通过闭包(completion handler)处理登录结果[^3]。 以下是更新后的代码实现示例: ```objc [GIDSignIn.sharedInstance signInWithPresentingViewController:self completionHandler:^(GIDGoogleUser * _Nullable user, NSError * _Nullable error) { if (error == nil) { NSString *googleIdToken = (NSString *)user.idToken; NSString *googleAccessToken = (NSString *)user.accessToken; NSLog(@"Google ID Token: %@", googleIdToken); NSLog(@"Google Access Token: %@", googleAccessToken); } else { NSLog(@"Google 登录失败:%@", error.localizedDescription); } }]; ``` #### 配置 Google Sign-In SDK 的必要步骤 1. 确保正确设置 `GIDSignIn.sharedInstance.clientID` 属性,将其设置为项目的客户端 ID。 ```objc NSString *kClientID = @"YOUR_CLIENT_ID"; [GIDSignIn.sharedInstance setClientID:kClientID]; ``` 2. 在 `AppDelegate` 或 `SceneDelegate` 中初始化窗口和根视图控制器。对于 iOS 13 及更高版本,需要在 `SceneDelegate` 中进行初始化[^3]: ```objc self.window = [[UIWindow alloc] initWithWindowScene:(UIWindowScene*)scene]; self.window.rootViewController = [[UIViewController alloc] init]; [self.window makeKeyAndVisible]; ``` 3. 确保项目中使用的 Google Sign-In SDK 是最新版本。如果未更新到 8.0.0 或更高版本,可能会导致方法未声明的错误。可以通过 CocoaPods 更新 SDK: ```bash pod 'GoogleSignIn' pod install ``` #### GIDSignInResult 的使用 在新版 Google Sign-In SDK 中,登录结果通过 `GIDGoogleUser` 对象传递给 completion handler。如果需要访问登录用户的详细信息,可以直接从 `GIDGoogleUser` 对象中获取。例如: - `idToken`:用于验证用户身份的令牌。 - `accessToken`:用于访问 Google API 的令牌。 示例代码如下: ```objc [GIDSignIn.sharedInstance signInWithPresentingViewController:self completionHandler:^(GIDGoogleUser * _Nullable user, NSError * _Nullable error) { if (error == nil) { NSString *googleIdToken = (NSString *)user.idToken; NSString *googleAccessToken = (NSString *)user.accessToken; NSLog(@"Google ID Token: %@", googleIdToken); NSLog(@"Google Access Token: %@", googleAccessToken); } else { NSLog(@"Google 登录失败:%@", error.localizedDescription); } }]; ``` --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值