下一個代碼僅適用於LBYouTubePlayerController* controller;
在@implementation ViewController
之內。有人可以向我解釋爲什麼我會得到這種行爲,有什麼區別?只有當我在實現中初始化對象時,代碼纔有效。
.h文件中:
#import <UIKit/UIKit.h>
#import "LBYouTube.h"
@interface ViewController : UIViewController<LBYouTubePlayerControllerDelegate>
@end
.m文件:
#import "ViewController.h"
@interface ViewController()
@end
@implementation ViewController
{
LBYouTubePlayerController* controller;
}
- (void)viewDidLoad
{
[super viewDidLoad];
controller = [[LBYouTubePlayerController alloc] initWithYouTubeURL:[NSURL URLWithString:@"http://www.youtube.com/watch?v=1UlbCgB9vms"] quality:LBYouTubeVideoQualityLarge];
controller.delegate = self;
controller.view.frame = CGRectMake(0.0f, 0.0f, 200.0f, 200.0f);
controller.view.center = self.view.center;
[self.view addSubview:controller.view];
如果我將繼續前進LBYouTubePlayerController* controller;
並把它裏面viewDidLoad
視頻將不會加載:
- (void)viewDidLoad
{
LBYouTubePlayerController* controller = [[LBYouTubePlayerController alloc] initWithYouTubeURL:[NSURL URLWithString:@"http://www.youtube.com/watch?v=1UlbCgB9vms"] quality:LBYouTubeVideoQualityLarge];
controller.delegate = self; ....}
你使用ARC嗎?無論哪種方式,您想要引用LBYouTubePlayerController。如果你沒有使用ARC,那麼你的內存泄漏沒有引用,如果使用ARC,實例被解除分配,並且只有視圖處於活動狀態,這意味着LBYouTubePlayerController無法加載視圖,調用方法等。 – TheBlack 2013-04-30 16:41:14
是的,xcode 4.6.2 – Segev 2013-04-30 16:42:11
這實際上是一個奇怪的方式。通常你會有一個視圖控制器,但看起來像你使用兩個。如果你沒有保留屬性引用,LBYouTubePlayerController將被釋放。 – sosborn 2013-04-30 16:44:01