gpt4 book ai didi

ios - 没有 arc 的初始化和分配?

转载 作者:行者123 更新时间:2023-11-29 04:38:17 25 4
gpt4 key购买 nike

抱歉,这是一个基本问题,我想知道为什么我的代码不需要为mapView分配/初始化。它会在保留时自动发生吗?我没有使用 ARC,并且在我的 MKMapView* mapView 的分配/初始化上它不会导致错误,但 map View 不显示位置信息,也不会显示为混合类型......但是在删除分配时viewDidLoad 的/init 语句一切正常!为什么?

#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
#import <MapKit/MapKit.h>

@interface MDViewController : UIViewController<CLLocationManagerDelegate, MKMapViewDelegate>

@property (retain, nonatomic) IBOutlet MKMapView* mapView;

@end


-----

#import "MDViewController.h"

@interface MDViewController ()
{
CLLocationManager* lmanager;
}

@end

@implementation MDViewController

@synthesize mapView;

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
lmanager= [[CLLocationManager alloc]init];
lmanager.delegate=self;
lmanager.desiredAccuracy=kCLLocationAccuracyBest;
lmanager.distanceFilter=kCLDistanceFilterNone;
[lmanager startUpdatingLocation];
//mapView = [[MKMapView alloc]init];//without allocating here it works
mapView.delegate=self;
mapView.mapType=MKMapTypeHybrid;
}

-(void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
//update map
MKCoordinateSpan span;
span.latitudeDelta= .001;
span.longitudeDelta=.001;


MKCoordinateRegion region;
region.center= newLocation.coordinate;
region.span=span;
[mapView setRegion:region animated:YES];
[mapView setShowsUserLocation:YES];

}

最佳答案

您不需要分配初始化您的 map View ,因为它是由 Xib 为您完成的。当加载界面 xib 时,框架会看到您有一个卡住的 map View 并自动分配初始化它,然后将该 map View 分配给 View Controller 代码中的 map View 。如果在代码中分配了 init,则会破坏两者之间的链接。

使其工作的一种方法是在 IB xib 中没有 map View ,并对其进行分配初始化、setDelegate、设置框架,最后将其 View 添加为主视图的 subview 。

我尽量保持简洁。我希望您能清楚地了解我们。 ARC 与这一切没有任何关系。

关于ios - 没有 arc 的初始化和分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10761912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com