OC 中readonly怎么使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OC 中readonly怎么使用相关的知识,希望对你有一定的参考价值。

设置一个属性为readonly,可是怎么给这个属性赋初始值啊,连初始值都设置不了要这个readonly何用... 设置一个属性为readonly,可是怎么给这个属性赋初始值啊 ,连初始值都设置不了 要这个readonly何用 展开

参考技术A OC中此处的readonly和你所想的还是有区别的,当你在@property中用readonly时只是表示编译器会帮你自动生成getter方法,同时不会自动帮你生成setter方法。既然编译器不给你setter你又不自己去定义setter方法。那你当然无法赋值。----说了这么多回头看还是没解决你的问题,下面才是真格的:你可以通过方法来赋值;代码如下:
#import
<Foundation/Foundation.h>
@interface
BaseClass
:
NSObject


@property
(nonatomic,
copy,readonly)
NSString
*name;
-
(void)setName:(NSString
*)name;
@end
---------
#import
"BaseClass.h"
@implementation
BaseClass
@synthesize
name=_name;
-
(void)setName:(NSString
*)name

if
(_name
!=
name)

[_name
release];
_name
=
[name
copy];


@end
主函数调用:
BaseClass
*base
=
[[BaseClass
alloc]
init];
[base
setName:@"Sheldon"];//通过方法给readonly属性赋值;
NSLog(@"base
class's
name
=
%@",
base.name);
-------
运行结果:
2014-08-20
16:07:21.562
Hello[5062:303]
base
class's
name
=
Sheldon
更多了解欢迎访问:http://blog.csdn.net/wuming22222/article/details/38706605

winform dataGridView 中使用了DataGridViewCheckBoxColumn怎么进行选择后的事件处理。

比如选择后点击“删除”按钮,进行删除,或选择后点击修改按钮,弹窗进行信息修改,现在CheckBox点不了勾,怎么写代码、求详细代码示范举例。
勾选CheckBox怎么写?删除按钮怎么写?修改按钮怎么写?

可能是你控件采用全局的ReadOnly模式了,要想要可以勾选,又要只读模式,那么你必须一列一列的设置readonly属性全部true除了了你check列为false
一下是常用的处理方式,仅供参考
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace Demo

    public partial class Form1 : Form
    
        public Form1()
        
            InitializeComponent();
            //测试数据()
            dataGridView1.Rows.Add(new object[]false,"删除","修改");
            dataGridView1.Rows.Add(new object[]  false, "删除1", "修改1" );
            dataGridView1.Rows.Add(new object[]  false, "删除2", "修改2" );
        
        //dataGridView的单元格点击事件
        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        
            if (e.RowIndex != -1&&e.ColumnIndex>0) 
            
                bool ischecked=(bool)dataGridView1.Rows[e.RowIndex].Cells[0].Value;
               // 其中dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex>]就是你当前点击的行对象,你可以得到点击行的ID,值等你想要的信息,然后做后续操作就可以了
                if (ischecked)
                
                    switch (e.ColumnIndex)
                    
                        case 1://这里弹出删除的窗口
                            MessageBox.Show("你点击了删除按钮");
                            break;
                        case 2://这里填写你跳转的窗口代码
                            MessageBox.Show("你点击了修改按钮");
                            break;
                    
                
                else
                    MessageBox.Show("请先勾选,然后进行操作!");
            
        
    

 具体效果就是这样的,3列 分别是 第一列 checkBox,第2,3列都是button列

我这个采用的列选项,列按钮来做,用户体验会更好的!!

追问

CheckBox勾选的问题解决了谢谢,我的意思是选择CheckBox后,整行的数据都被选中,点击删除,删除整行的数据这个怎么做?

追答

这个是一个逻辑问题啊!!
用了复选框了,你就根据复选框的状态来判断是否可以操作就是了!!
这个有什么困难呢?
int count=dataGridView_MeterType.Rows.Count;
for (int i = 0; i < count; i++)

DataGridViewRow dr = dataGridView_MeterType.Rows[i];
if ((bool)dr.Cells[0].Value)

//删除选定的所有行
dataGridView_MeterType.Rows.Remove(dr);
i--;
count--;

追问

如何表示我选中了多少个复选框?

追答

额!!代码都给你了,你自己看不懂么?

参考技术A 两种方案:

给每一个CheckBox绑定一个ID在触发DataGridViewCheckBoxColumn时候将ID获取到放置于一个数组里面然后点击修改或者删除时候直接对数组进行操作,需要注意的是在取消选择的时候需要将数组中对应的值移除。
不使用DataGridViewCheckBoxColumn这个方法,在点击修改或删除时候,读取DataGridView第一行的数据,然后进行遍历找到所有选中的CheckBox找到对应的操作ID进行修改或删除(建议使用第一种方式)
参考技术B

两种方案:

    给每一个CheckBox绑定一个ID在触发DataGridViewCheckBoxColumn时候将ID获取到放置于一个数组里面然后点击修改或者删除时候直接对数组进行操作,需要注意的是在取消选择的时候需要将数组中对应的值移除。

    不使用DataGridViewCheckBoxColumn这个方法,在点击修改或删除时候,读取DataGridView第一行的数据,然后进行遍历找到所有选中的CheckBox找到对应的操作ID进行修改或删除(建议使用第一种方式)

以上是关于OC 中readonly怎么使用的主要内容,如果未能解决你的问题,请参考以下文章

readonly数值怎么修改

Java有没有readonly

Spring 事务 readOnly 到底是怎么回事

readonly

root filesystem是readonly 的怎么办

shallowReadonly 与 readonly原理浅析