小编ZeN*_*ewb的帖子

没有为带有ARC的MKMapView发布内存

我有一个自定义UIView调用ActivityDetailView我实例化,然后添加到父视图控制器内的滚动视图.分配此自定义视图时,每次额外内存大约需要1mb,而且仪器显示内存永远不会被释放,即使视图和父视图控制器都dealloc调用了它们的方法.我得到了内存警告,应用程序最终被杀死所以我显然做错了什么.

更新了有关地图视图的信息,但我需要修复

在自定义ActivityDetailViewnib文件中,有一个缩放的地图视图,并以用户的位置为中心.当我从笔尖中删除此地图视图以使其不在屏幕上绘制时,内存分配问题就消失了.但是,我显然需要地图视图.当地图视图超出范围时,为什么地图视图的数据不会被释放?

视图显示时只有1 ActivityDetailView和1 ActivityDetailViewController活着.一旦我将视图从堆栈中弹出,它们就不再生存了.即使通过仪器显示对象被杀死,内存如何保持增长也没有意义.如果取消分配父视图,为什么地图视图数据不会被释放?

我做错了什么或应该检查什么?

这是自定义视图:

@interface ActivityDetailView ()
{
    CLLocation *location;
    __weak id parentViewController;
    int scrollViewX;

    ImageUtility *imageUtility;
}
@end

@implementation ActivityDetailView

-(id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self)
    {
        NSArray *xibViews = [[NSBundle mainBundle] loadNibNamed:@"ActivityDetailView" owner:nil options:nil];
        if ([xibViews count] < 1) return nil;
        ActivityDetailView * xibView = [xibViews objectAtIndex:0];
        [xibView setFrame:frame];
        self = xibView;
    }
    return self;
}

- (id)initWithLocation:(CLLocation *)loc parentController:(id)parent
{
    self …
Run Code Online (Sandbox Code Playgroud)

memory mkmapview ios ios6

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

Objective-C中的Mixins或多重继承?

比方说,例如,我有MyUITextViewSubclass从继承UITextViewMyUITextFieldSubclass从中继承UITextField和这两个子类中含有大量的相同的方法和属性类似的行为添加到这些UI控件.

由于UITextViewUITextField从不同的类继承,有一个简单的方法来创建一个抽象类,所有这些重复的代码相结合? 换句话说,是否有可能创建一个我可以从这两个子类继承的抽象类,然后只是覆盖两者之间不同的方法?

到目前为止我所知道的:

  • 我知道Objective-C不支持多继承(从两个或更多类继承)
  • 我知道我可以使用Categories添加常用方法,但我认为这不会解决覆盖init方法或添加私有属性

abstract-class objective-c uitextfield uitextview ios

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

按字典键排序可变数组

我已经使用各种排序方法查看了几个答案NSMutableArray,但由于某种原因它们不适合我.

我只是试图通过Delay每个字典中的键对包含字典的可变数组进行排序.但是,"sorted"数组与原始数组完全相同.

顺便说一句,如果我创建一个虚拟可变数组并用包含数字的字典填充它,它可以正常工作,但由于某种原因它不会对我正在初始化的这个可变数组进行排序.

我究竟做错了什么?

这是我的代码:

playlistCalls = [[NSMutableArray alloc] initWithArray:[currentPlaylist objectForKey:@"Tunes"]];

NSLog(@"original %@", playlistCalls);

NSSortDescriptor *delay = [NSSortDescriptor sortDescriptorWithKey:@"Delay" ascending:YES];
[playlistCalls sortUsingDescriptors:[NSArray arrayWithObject:delay]];

NSLog(@"sorted %@", playlistCalls);
Run Code Online (Sandbox Code Playgroud)

这是包含字典的数组:

2012-06-04 15:48:09.129 MyApp[57043:f503] original (
        {
        Name = Test Tune;
        Delay = 120;
        Volume = 100;
    },
        {
        Name = Testes;
        Delay = 180;
        Volume = 100;
    },
        {
        Name = Testing;
        Delay = 60;
        Volume = 100;
    }
)

2012-06-04 15:48:09.129 MyApp[57043:f503] sorted (
        {
        Name = Test …
Run Code Online (Sandbox Code Playgroud)

sorting iphone objective-c nsmutablearray ios

6
推荐指数
1
解决办法
1100
查看次数

WheelView没有填充父级

我正在使用Yuri Kanivets的WheelView控件,我发现它没有填充父视图,即使布局XML指定它这样做.

这是我的意思的图像:

在此输入图像描述

这是布局XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#00000000">

    <LinearLayout
        android:orientation="vertical"
        android:layout_alignParentBottom="true"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:paddingTop="5dp"
            android:paddingBottom="5dp"
            android:background="@drawable/picker_bar">
            <Button
                android:id="@+id/repeatButton"
                android:textColor="#FFF"                
                android:layout_gravity="center_vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/picker_button_selected"
                android:paddingTop="8dp"
                android:paddingBottom="8dp"
                android:paddingLeft="15dp"
                android:paddingRight="15dp"
                android:layout_marginLeft="7dp"
                android:gravity="center"
                android:textSize="16sp"
                android:text="Repeat"/>
            <Button
                android:id="@+id/DelayButton"
                android:layout_gravity="center_vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/picker_button_unselected"
                android:paddingTop="8dp"
                android:textColor="#FFF"
                android:paddingBottom="8dp"
                android:paddingLeft="15dp"
                android:paddingRight="15dp"  
                android:layout_marginLeft="10dp"  
                android:gravity="center"
                android:textSize="16sp"         
                android:text="Delay"/>
            <Button
                android:id="@+id/doneButton"
                android:layout_marginLeft="10dp"
                android:layout_gravity="center_vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/picker_button_unselected"
                android:textColor="#FFF"
                android:paddingTop="8dp"
                android:paddingBottom="8dp"
                android:paddingLeft="15dp"
                android:paddingRight="15dp"
                android:gravity="center"
                android:textSize="16sp"
                android:text="Done"/>               
        </LinearLayout>

        <include layout="@layout/repeat_view"/>
        <include layout="@layout/delay_view"/>
   </LinearLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

这是重复/延迟视图XML(它们几乎相同): …

android android-intent android-layout android-wheel

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